📜  在Python中创建嵌套的数据类对象(1)

📅  最后修改于: 2023-12-03 14:51:20.372000             🧑  作者: Mango

在Python中创建嵌套的数据类对象

数据类(data class)是 Python 3.7 新增的特性,它们被设计用来保存数据,以便于简洁地定义和访问。嵌套的数据类可以用来创建比较复杂的数据结构,让代码更具表现力和可读性。

1. 定义一个简单的数据类

让我们从定义一个简单的数据类开始,这个数据类表示一个人的姓名和年龄。

from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int

person = Person("Alice", 30)
print(person)

输出:

Person(name='Alice', age=30)

可以看到,使用数据类 Person 创建一个 person 实例,并输出它的字符串表示。字符串 Person(name='Alice', age=30) 表示一个 Person 对象,它的属性 name 的值为 'Alice',属性 age 的值为 30

2. 嵌套的数据类

现在,我们想要扩展 Person 类,使其表示多个人,每个人都有一系列朋友。我们可以使用另一个数据类 Friend 来表示一个朋友,然后将它添加到 Person 类中。

from dataclasses import dataclass

@dataclass
class Friend:
    name: str
    age: int

@dataclass
class Person:
    name: str
    age: int
    friends: List[Friend]

alice = Person("Alice", 30, [Friend("Bob", 25), Friend("Charlie", 40)])
print(alice)

输出:

Person(name='Alice', age=30, friends=[Friend(name='Bob', age=25), Friend(name='Charlie', age=40)])

可以看到,我们使用 List[Friend] 来定义 friends 属性,并将其初始化为一个包含两个 Friend 对象的列表。输出字符串表示了 Person 对象的所有属性,包括 friends 列表中的两个朋友。

3. 使用嵌套的数据类来表示更复杂的数据结构

在实际开发中,我们可能需要更复杂的数据结构。例如,我们可能有一个存储市场上产品价格和库存的数据库。我们可以使用以下数据类来表示它:

from dataclasses import dataclass
from typing import List

@dataclass
class Product:
    name: str
    price: float
    quantity: int

@dataclass
class Market:
    name: str
    products: List[Product]

market = Market("Supermarket", [Product("apple", 2.0, 50), Product("banana", 1.0, 100), Product("orange", 1.5, 30)])
print(market)

输出:

Market(name='Supermarket', products=[Product(name='apple', price=2.0, quantity=50), Product(name='banana', price=1.0, quantity=100), Product(name='orange', price=1.5, quantity=30)])

可以看到,我们定义了一个包含 Product 对象的 List 属性 products,并用它来初始化 Market 对象。

除了简单的属性类型之外,数据类也可以包含嵌套的数据类,列表和字典,以便表示更复杂的数据结构。使用数据类创建嵌套的数据结构可以使代码更具表现力和可读性,并且更容易使用。