我真的在這三種方法Python中設置屬性優先和壓倒一切的
setattr()
__setattr__
obj.x = 10
我有這個測試類之間的混淆
class Test(object):
def __init__(self):
self.__dict__['x'] = 99
b = Test()
#setattr(b,'x',10)
#b.x = 10
現在我有兩個問題
BX轉換爲
b.x = 10 --> b.__setattr__(x,10) --> b.__dict__['x'] = 10
和SETATTR(B, 'X',10)也被轉換到
setattr(b,'x',10) --> b.__setattr__(x,10) --> b.__dict__['x'] = 10
然後爲什麼我們使用了另一種
- 這是最低級的功能,使得沒有不管如何價值的varaible分配,但我的價值沒有得到chnages要麼
b.x
或sttattr
或__setattr
你的最後一句話是沒有意義的,請說明你的要求。 – BrenBarn 2013-02-20 05:43:11
我的意思是x的值應該總是10,不管用戶如何賦值 – user192082107 2013-02-20 05:48:33
這個b .__ setattr __(x,10) - > b .__ dict __ ['x'] = 10'不正確。例如見['__slots__'](http://docs.python.org/3.1/reference/datamodel.html?highlight=__slots__#object.__slots__) – 2013-02-20 05:55:49