Применение свойства класса в качестве значения по умолчанию для аргумента метода в Python
Дата и время: 5 октября 2014 г. 18:26 | Категория: Программирование, Python
При рядовом программировании возникли трудности при применение свойства класса в качестве значения по умолчанию для аргумента метода этого же класса. Далее я рассмотрю несколько методов (испробованных мной) которыми достигнуть желаемого эффекта не получится, а также как всё-таки поступать в данной ситуации.
Первое, что пришло мне на ум:
class A():
a = 5
def method(self, b = self.a):
pass
Но, к моему разочарованию, при выполнении я получил NameError.
Далее, от безысходности, я попробовал убрать self:
class A():
a = 5
def method(self, b = a):
pass
Сразу говорю, что это ошибочный код, причём ошибка ещё хуже предыдущей, т. к. не отлавливается интерпретатором. В итоге получается эффект того, что вместо a подставляется константа 5. Т. е. при изменение свойства a, значение по умолчанию в функции не изменяется, а остаётся равным 5.
Как оказалось, чтобы решить данную проблему, используется следующее, довольно неуклюжее решение:
class A():
a = 5
def method(self, b = None):
if b == None:
b = self.a
pass
comments powered by Disqus