присвоение переменной класса в качестве значения по умолчанию аргументу метода класса

Я хотел бы создать метод внутри класса с параметрами по умолчанию, взятыми из этого класса. В общем я делаю фильтрацию по некоторым данным. Внутри моего класса у меня есть метод, где обычно я передаю вектор данных. Иногда у меня нет вектора, и я беру смоделированные данные. Каждый раз, когда я не передаю конкретный вектор, я хотел бы взять смоделированные данные по умолчанию. Я думал, что это должна быть простая конструкция, где внутри моего определения метода я говорю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 виден в этой области и не должен быть проблемой, чтобы иметь его в качестве значения по умолчанию. Не знаю, почему у меня есть эта ошибка и как это сделать. Это, вероятно, простой вопрос, но я пытаюсь выяснить это или найти решение без недостатка уже некоторое время. я нашеланалогичный вопросы только для других языков.

Ответы на вопрос(4)

Ваш ответ на вопрос