0

Инициализация/декларация атрибутов в классе Python: где их размещать?

19

Я задумался, какой способ инициализации атрибутов объектов в Python считается наилучшей практикой: делать это в теле класса или внутри функции __init__?

Например, есть такой подход:

class A(object):
    foo = None

или такой:

class A(object):
    def __init__(self):
        self.foo = None

Какой из этих способов предпочтительнее и в каких случаях стоит использовать тот или иной подход?

1 ответ(ов)

0

Если вы хотите, чтобы атрибут был разделяемым всеми экземплярами класса, используйте атрибут класса:

class A(object):
    foo = None

Это приведёт к тому, что ('foo', None) будет парой (key, value) в A.__dict__.

Если же вы хотите, чтобы атрибут мог настраиваться для каждого экземпляра отдельно, используйте атрибут экземпляра:

class A(object):
   def __init__(self):
       self.foo = None

В этом случае ('foo', None) станет парой (key, value) в a.__dict__, где a = A() — это экземпляр класса A.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь