其他分享
首页 > 其他分享> > 如何在不注释类型的情况下添加数据类字段?

如何在不注释类型的情况下添加数据类字段?

作者:互联网

当数据类中存在一个字段,其类型可以是任何类型时,如何省略注释?

@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