przypisanie zmiennej klasy jako domyślnej wartości do argumentu metody klasy
Chciałbym zbudować metodę wewnątrz klasy z domyślnymi argumentami wartości pobranymi z tej klasy. Na ogół filtruję niektóre dane. W mojej klasie mam metodę, w której normalnie przekazuję wektor danych. Czasami nie mam wektora i wykonuję symulowane dane. Za każdym razem, gdy nie przekazuję określonego wektora, domyślnie chcę pobrać symulowane dane. Myślałem, że powinna to być łatwa konstrukcja, w której w mojej definicji metody mówięa=self.vector
. Ale z jakiegoś powodu mam błądNameError: name 'self' is not defined
. Uproszczona konstrukcja to:
class baseClass(object): # This class takes an initial data or simulation
def __init__(self):
self.x = 1
self.y = 2
class extendedClass(baseClass): # This class does some filtering
def __init__(self):
baseClass.__init__(self)
self.z = 5
def doSomething(self, a=self.z):
self.z = 3
self.b = a
if __name__ == '__main__':
a = extendedClass()
print a.__dict__
a.doSomething()
print a.__dict__
Oczekiwałem wyjścia:
{'y': 2, 'x': 1, 'z': 5}
{'y': 2, 'x': 1, 'z': 3, 'b': 5}
Próbowałem domyślnego przypisania jakodef doSomething(self, a=z):
oczywiście to nigdy nie działa. O ile rozumiemself.z
jest widoczny w tym zakresie i nie powinien być problemem, aby mieć go jako wartość domyślną. Nie wiem, dlaczego mam ten błąd i jak to zrobić. Jest to prawdopodobnie łatwe pytanie, ale staram się to rozgryźć lub znaleźć rozwiązanie, którego już nie brakuje. znalazłempodobny pytania tylko dla innych języków.