在属性模块中定义自定义属性



我正在寻找一种方法,可以随心所欲地定义类属性。

例如,我尝试了这种方式:

@attrs.define
class MyClass:
pass

MyClass(a=1, b=2)

但收到TypeError:

TypeError: MyClass.__init__() got an unexpected keyword argument 'a'

有可能实现我想要的吗?

这个怎么样:

class MyClass:
def __init__(self, **kwargs):
for k, v in kwargs.items():
self.__setattr__(k, v)

o = MyClass(a=1, b=2)
print(o.a, o.b)

结果是:

1 2

必须告诉attrs您想要使用的属性,否则它无法为您编写高效的__init__(以及__repr__等其他辅助方法(。它既是数据也是文档。

最新更新