更新:数据类
通过引入数据类中的Python 3.7,我们非常接近。
下面的示例类似于下面的NamedTuple示例,但是结果对象是可变的,并且允许使用默认值。
from dataclasses import dataclass
@dataclass
class Point:
x: float
y: float
z: float = 0.0
p = Point(1.5, 2.5)
print(p) # Point(x=1.5, y=2.5, z=0.0)
如果您想使用更多特定的类型注释,那么这与新的键入模块配合使用非常好。
我一直在拼命等待!如果您问我,数据类和新的NamedTuple声明,再加上键入模块,真是天赐之物!
改进了NamedTuple声明
从Python 3.6开始,只要您可以忍受不变性,它就变得非常简单和美观(IMHO)。
引入了一种声明NamedTuples的新方法,该方法还允许类型注释:
from typing import NamedTuple
class User(NamedTuple):
name: str
class MyStruct(NamedTuple):
foo: str
bar: int
baz: list
qux: User
my_item = MyStruct('foo', 0, ['baz'], User('peter'))
print(my_item) # MyStruct(foo='foo', bar=0, baz=['baz'], qux=User(name='peter'))