0
我碰到一個問題,我需要一個自定義getter和一個vanilla setter。當我嘗試在子類的__init__
中設置屬性時,會發生問題。如果我將super
的最後一個__init__
覆蓋Child
類中的集合。在子類中設置超級屬性'__init__
顯然具有super
來看,它是__init__
首先修復的問題,我已經把一個assert
到Parent
的setx
以確保_x已經被初始化。
我的問題是我是否做了明顯錯誤的事情。在二傳手中有一個斷言讓我感到笨拙。
注意:我以前沒有在init中初始化_x,直到pylint向我大喊。
class Parent(object):
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
#assert hasattr(self,'_x')
self._x = value
x = property(getx, setx)
class Child(Parent):
def __init__(self, x):
self.x = x
super(Child, self).__init__() # sets x to None
if __name__ == '__main__':
p = Parent()
p.x = 123
print p.x # prints 123
c = Child(321)
print c.x #prints None
「如果我把超類的__init__持續它將覆蓋在子類中集」。首先放置它有什麼問題? – 2011-01-27 00:11:23