Инициализация/декларация атрибутов в классе Python: где их размещать?
Я задумался, какой способ инициализации атрибутов объектов в Python считается наилучшей практикой: делать это в теле класса или внутри функции __init__
?
Например, есть такой подход:
class A(object):
foo = None
или такой:
class A(object):
def __init__(self):
self.foo = None
Какой из этих способов предпочтительнее и в каких случаях стоит использовать тот или иной подход?
1 ответ(ов)
Если вы хотите, чтобы атрибут был разделяемым всеми экземплярами класса, используйте атрибут класса:
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
.
Какие самые распространенные форматы docstring в Python? [закрыт]
Одинарные и двойные кавычки в Python [закрыто]
Следует ли добавлять запятую после последнего аргумента в вызове функции? [закрыто]
Как изменить порядок столбцов в DataFrame?
'pip' не распознан как командa внутреннего или внешнего формата