присвоение переменной класса в качестве значения по умолчанию аргументу метода класса
Я хотел бы создать метод внутри класса с параметрами по умолчанию, взятыми из этого класса. В общем я делаю фильтрацию по некоторым данным. Внутри моего класса у меня есть метод, где обычно я передаю вектор данных. Иногда у меня нет вектора, и я беру смоделированные данные. Каждый раз, когда я не передаю конкретный вектор, я хотел бы взять смоделированные данные по умолчанию. Я думал, что это должна быть простая конструкция, где внутри моего определения метода я говорюa=self.vector
, Но почему-то у меня ошибкаNameError: name 'self' is not defined
, Упрощенная конструкция:
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__
Результат, который я ожидал, должен быть:
{'y': 2, 'x': 1, 'z': 5}
{'y': 2, 'x': 1, 'z': 3, 'b': 5}
Я пробовал назначение по умолчанию какdef doSomething(self, a=z):
очевидно, это не работает никогда. Насколько я понимаюself.z
виден в этой области и не должен быть проблемой, чтобы иметь его в качестве значения по умолчанию. Не знаю, почему у меня есть эта ошибка и как это сделать. Это, вероятно, простой вопрос, но я пытаюсь выяснить это или найти решение без недостатка уже некоторое время. я нашеланалогичный вопросы только для других языков.