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