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