如何在不注释类型的情况下添加数据类字段?
作者:互联网
当数据类中存在一个字段,其类型可以是任何类型时,如何省略注释?
@dataclass
class Favs:
fav_number: int = 80085
fav_duck = object()
fav_word: str = 'potato'
似乎以上代码实际上并未为fav_duck创建字段.它只是使它成为普通的旧类属性.
>>> Favs()
Favs(fav_number=80085, fav_word='potato')
>>> print(*Favs.__dataclass_fields__)
fav_number fav_word
>>> Favs.fav_duck
<object at 0x7fffea519850>
解决方法:
数据类装饰器通过在__annotations__中查找名称来检查类以查找字段. It is the presence of annotation which makes the field,因此,您确实需要一个注释.
但是,您可以使用通用的一种:
@dataclass
class Favs:
fav_number: int = 80085
fav_duck: 'typing.Any' = object()
fav_word: str = 'potato'
标签:duck-typing,python,annotations,python-3-7,python-dataclasses 来源: https://codeday.me/bug/20191010/1887398.html