Mam klasy o nazwie Node
który ma importance
setter i getter, poniżej:Zastępowanie dziedziczną własność setter
class Node:
@property
def importance(self):
return self._importance
@importance.setter
def importance(self, new_importance):
if new_importance is not None:
new_importance = check_type_and_clean(new_importance, int)
assert new_importance >= 1 and new_importance <= 10
self._importance = new_importance
Później, mam klasę Theorem
która dziedziczy Node
. Jedyna różnica między Theorem
i Node
, o ile dotyczy to importance
, polega na tym, że Theorem
musi mieć importance
co najmniej 3
.
Jak można Twierdzenie dziedzicząimportance
seter, ale dodać na dodatkowym ograniczeniem, że importance >= 3
?
starałem się zrobić to w ten sposób:
class Theorem(Node):
@importance.setter
def importance(self, new_importance):
self.importance = new_importance # hoping this would use the super() setter
assert self.importance >= 3
Zauważ, że możesz rozwiązać problem zupełnie inaczej poprzez posiadanie atrybutu klasy 'MIN_IMPORTANCE', który jest' 1' w 'Węzeł' i' 3' w 'Twierdzeniu'. – jonrsharpe
Możliwy duplikat [Przesłanianie właściwości w pythonie] (http://stackoverflow.com/questions/7019643/overriding-properties-in-python) –