创建动态定义属性的Python类
抱歉,如果这个问题之前有人问过。请问在Python中,有没有办法动态创建一个类,而这个类的属性并不是在__init__
方法中定义的呢?
比如说,使用这个类:
class Person(object):
def __init__(self):
...
我可以在初始化的时候动态地添加属性,像这样:
person = Person(name='Joe')
然后可以这样访问它:
person.name
>>> Joe
谢谢!
2 个回答
14
最简单的方法就是把关键字参数字典赋值给类的 __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()
方法。