很抱歉,如果之前有人询问过。是否可以在Python中动态创建类,其中属性未在类的__init__
方法中定义。
例如使用此类
class Person(object):
def __init__(self):
...
我可以在初始化过程中动态输入属性,如下所示:
person = Person(name='Joe')
并像这样访问:
person.name
>>> Joe
谢谢
答案 0 :(得分:14)
最简单的方法是将关键字参数dict分配给类的__dict__
属性:
class Person(object):
def __init__(self, **kw):
self.__dict__ = kw
person = Person(name='Joe')
print person.name
打印
Joe
要在创建对象后添加属性,请使用
def add_attributes(self, **kw):
self.__dict__.update(kw)
您也可以在构造函数中使用.update()
。
答案 1 :(得分:0)
这可以通过使用descriptors(detailed explanation)来实现。这也使您可以在创建对象后添加属性。