2011-03-01 111 views
5

對不起,如果這已經問過。如果在類的__init__方法中沒有定義屬性,是否可以動態創建類?創建Python類,其中的屬性是動態定義的

例如與此類

class Person(object): 
    def __init__(self): 
    ... 

我可以動態地放在屬性初始化過程是這樣的:

person = Person(name='Joe')

和訪問它像這樣:

person.name 
>>> Joe 

謝謝

回答

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()