Блог
  • Начало
  • Обо мне
  • Обратная связь

Применение свойства класса в качестве значения по умолчанию для аргумента метода в 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
Select language:
  • Русский
  • English

  • Программирование

    Python C++ JavaScript

    Веб-разработка

    Django ASP.NET

    Мобильная разработка

    Windows Phone Android

    Разработка игр

    Unity3d Blender

    Артем Устимов © 2014