Blog
  • Home
  • About
  • Contact

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

Date and time: Oct. 5, 2014, 6:26 p.m. | Category: Программирование, 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
Выберите язык:
  • Русский
  • English

  • Programming

    Python C++ JavaScript

    Web development

    Django ASP.NET

    Mobile development

    Windows Phone Android

    Game development

    Unity3d Blender

    Artem Ustimov © 2014