比方说,我在Python中有以下类
class Foo(object):
a = None
b = None
c = None
def __init__(self, a = None, b = None, c = None):
self.a = a
self.b = b
self.c = c
有没有办法简化这个过程?每当我向类Foo添加一个新成员时,我都不得不修改构造函数。
发布于 2019-08-16 23:58:22
Python3.7提供了dataclasses
,它在如下情况下很有帮助:
from dataclasses import dataclass
@dataclass
class Foo:
a: str = None
b: str = None
c: str = None
当您只想存储几个属性时,这使您不必编写__init__
方法。
为您提供了一个很好的__repr__
方法:
>>> a = Foo()
>>> a
Foo(a=None, b=None, c=None)
如果你需要对参数进行计算,你可以实现__post_init__
。
另请参阅namedtuple:
from collections import namedtuple
Foo = namedtuple('Foo', ['a', 'b', 'c'])
不过,所有字段都需要使用namedtuple。
>>> a = Foo(1, 2, 3)
>>> a
Foo(a=1, b=2, c=3)
发布于 2010-10-08 02:21:50
https://stackoverflow.com/questions/3884612
复制相似问题