dataclasses 数据类
dataclasses 模块提供一个装饰器和一系列函数用于自动添加 __init__()
和 __repr__()
等特殊方法到用户定义的类中。
该模块最初由 PEP (Python增强提案) 557 提出。
创建数据类
from dataclasses import dataclass
@dataclass
class InventoryItem:
"""Class for keeping track of an item in inventory."""
name: str
unit_price: float
quantity_on_hand: int = 0
def total_cost(self) -> float:
return self.unit_price * self.quantity_on_hand
@dataclass
装饰器会添加一系列方法到类中,其中包括 __init__()
,如下所示:
def __init__(self, name: str, unit_price: float, quantity_on_hand: int = 0):
self.name = name
self.unit_price = unit_price
self.quantity_on_hand = quantity_on_hand
注意此方法是自动添加到类中的,开发者不需要手动添加。
数据类转成字典
from dataclasses import dataclass, asdict
item = InventoryItem("shoe", 25)
print(asdict(item))
# {'name': 'shoe', 'unit_price': 25, 'quantity_on_hand': 0}
字典转成数据类
from dataclasses import make_dataclass
shoe_data = {
"name": "Shoe",
"unit_price": 25,
"quantity_on_hand": 1
}
InventoryItem = make_dataclass("InventoryItem", shoe_data.keys())
item = InventoryItem(**shoe_data)
print(item)
# InventoryItem(name='Shoe', unit_price=25, quantity_on_hand=1)
代码挑战
修改编辑器中数据类,使其打印
height: 5 width: 10 area: 50
。
Loading...
> 此处输出代码运行结果