In meiner Codeklasse A
hat eine Eigenschaft, aber Klasse B
erbt es nicht. Unterstützt Vererbung? Oder ist es meine Schuld?Unterstützen Eigenschaften Vererbung?
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
Die Fehlermeldung lautet wie folgt:
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
Es sollte "@ A.x.setter" sein. 'x' steht hier unter dem Namensraum' A'. –
Sie können eine Eigenschaft erben, aber Sie können sie nicht unabhängig ändern. Wenn Sie 'x' erben und einen Setter hinzufügen, wird es auch im Original enthalten sein. Sie können die Eigenschaft als 'x' definieren, um eine unabhängige Version zu erhalten. –
Also ist 'x' im Elternteil schreibgeschützt, aber im Kind schreibgeschützt? – jonrsharpe