我試圖初始化使用kwargs的對象和我用下面的代碼:Python的初始化對象與kwargs
class A:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def __repr__(self):
return "A('%s', '%s', '%s')" % (self.name, self.age, self.address)
a = A(name="J Smith", age=20, address ="New York")
b = A(name="B Jones", age=40, address = "Chicago")
我用這種方法目前的問題是,它似乎使用kwargs而非更新要慢得多變量(即a.name =「J Smith」,a.age = 20)而不是將它們作爲字典傳遞。在我初始化'b'後,我發現實例'a'的屬性已被'b'的屬性覆蓋。有沒有什麼我在這裏做錯了和/或有一個我失蹤的步驟?
_「我發現實例'a'的屬性已被'b'的屬性覆蓋。」_這不會發生在我的機器上。你能發表一些代碼來證明你的問題嗎?現在,你有一些語法錯誤。 – Kevin
需要更多的信息...如果你使用'A.name =「J Smith」',你將設置一個_class_變量,而不是_instance_變量。 –
在Python 3.2.2中運行這段代碼,我看不到緩慢或屬性覆蓋。你能複製/粘貼一個顯示問題的Python會話嗎? –