【发布时间】:2011-03-01 11:57:27
【问题描述】:
对不起,如果以前有人问过这个问题。是否可以在 Python 中动态创建类的 __init__ 方法中未定义属性的类。
例如这个类
class Person(object):
def __init__(self):
...
我可以像这样在初始化期间动态放入属性:
person = Person(name='Joe')
并像这样访问它:
person.name
>>> Joe
谢谢
【问题讨论】:
对不起,如果以前有人问过这个问题。是否可以在 Python 中动态创建类的 __init__ 方法中未定义属性的类。
例如这个类
class Person(object):
def __init__(self):
...
我可以像这样在初始化期间动态放入属性:
person = Person(name='Joe')
并像这样访问它:
person.name
>>> Joe
谢谢
【问题讨论】:
最简单的方法是将关键字参数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()。
【讨论】:
这可以通过使用descriptors (detailed explanation) 来实现。这也使您能够在创建对象后添加属性。
【讨论】: