2014-04-21 11 views
0

我想創建一個類,其實例的屬性是在實例化時定義的。如何定義一個類,在實例化時賦予它的參數成爲它的實例變量?

起初我還以爲我應該做這樣的事情,

class TestData(object): # Example via http://stackoverflow.com/questions/2641484/class-dict-self-init-args 

    def __init__(self, *args, **kwargs): 
     super(TestData, self).__init__() 
     for arg in args: 
      self.arg = arg 

但會分配所有參數相同的屬性self.arg並不會工作。

回答

0

修改與意見建議,我來到了這個解決方案,它爲我的作品:

class TestData(object): # Example via http://stackoverflow.com/questions/2641484/class-dict-self-init-args 

    def __init__(self, *args, **kwargs): 
     super(TestData, self).__init__() 
     self.__dict__.update(kwargs) 
     for arg in args: 
      setattr(self, arg, arg) 

,如果進一步屬性需要被添加到實例化以後,可以通過調用setattr(instancename, arg, val)

+0

現在做我想找出如何定義一個可以輕鬆打印出所有屬性的類方法。 –

+1

在這兩種情況下都不需要調用'__setattr__'。通常你應該避免直接調用雙下劃線魔術方法。只要做'setattr(self,arg,arg)'。 –

+1

而不是覆蓋__dict__,最好更新它:'self .__ dict __。update(** kwargs)'。 – Daniel

相關問題