ho una classe denominata Node
che ha un importance
setter e getter, qui di seguito:override un setter proprietà ereditata
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
Più tardi, ho una classe che eredita da Theorem
Node
. L'unica differenza tra uno Theorem
e uno Node
, per quanto riguarda importance
, è che uno Theorem
deve avere uno importance
di almeno 3
.
Come può un ereditare Teorema il importance
setter, ma aggiungere il vincolo aggiuntivo che importance >= 3
?
ho cercato di fare in questo modo:
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
Nota: si potrebbe risolvere il problema in modo completamente diverso avendo un attributo di classe 'MIN_IMPORTANCE' che è' 1' in 'Nodo' e' 3' in 'Teorema'. – jonrsharpe
Possibile duplicato di [Sovrascrivere le proprietà in python] (http://stackoverflow.com/questions/7019643/overriding-properties-in-python) –