Mi piacerebbe avere una classe figlia modificare una variabile di classe che eredita dal suo genitore.classe ereditata modifica variabile in Python
mi piacerebbe fare qualcosa sulla falsariga di:
class Parent(object):
foobar = ["hello"]
class Child(Parent):
# This does not work
foobar = foobar.extend(["world"])
e idealmente avere:
Child.foobar = ["hello", "world"]
avrei potuto fare:
class Child(Parent):
def __init__(self):
type(self).foobar.extend(["world"])
ma poi ogni volta che un'istanza di un'istanza di Child, "world" viene aggiunto all'elenco, che è indesiderato. Mi potrebbe modificare ulteriormente a:
class Child(Parent):
def __init__(self):
if type(self).foobar.count("world") < 1:
type(self).foobar.extend(["world"])
ma questo è ancora un hack perché devo istanziare un'istanza del bambino prima che funzioni.
C'è un modo migliore?
Questo è straordinariamente brillante e semplice! Inoltre, se il valore iniziale dell'attributo child deve essere identico all'attributo padre, sarebbe utile usare 'from copy import deepcopy; foobar = deepcopy (Parent.foobar) ' – zen11625