在我的代碼類A
有一個屬性,但類B
不會繼承它。 @property
是否支持繼承?或者是我的錯?屬性是否支持繼承?
class A(object):
def __init__(self):
self._x = 100
@property
def x(self):
return self._x
@x.setter
def x(self, v):
self._x = v
class B(A):
@x.setter
def x(self, v):
self._x = v
該錯誤消息如下:
Traceback (most recent call last):
File "test.py", line 9, in <module>
class B(A):
File "test.py", line 10, in B
@x.setter
NameError: name 'x' is not defined
它應該是'@ A.x.setter'。 'x'在這裏是名字空間'A'。 –
你可以繼承一個屬性,但不能單獨修改它。如果你繼承'x'並添加一個setter,那麼原來也會有。您可以再次將屬性定義爲'x'來獲得獨立版本。 –
所以'x'在父對象中是隻讀的,但在子對象中是可讀寫的? – jonrsharpe