我正在寻找一种方法,可以随心所欲地定义类属性。
例如,我尝试了这种方式:
@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__
等其他辅助方法(。它既是数据也是文档。