Чи повинен я давати своїм учасникам класу такі значення за замовчуванням:
class Foo:
num = 1
чи ось так?
class Foo:
def __init__(self):
self.num = 1
У цьому питанні я виявив, що в обох випадках
bar = Foo()
bar.num += 1
є чітко визначеною операцією.
Я розумію, що перший метод дасть мені змінну класу, а другий - ні. Однак, якщо мені не потрібна змінна класу, а потрібно лише встановити значення за замовчуванням для мій змінних екземпляра, чи є обидва методи однаково хорошими? Або один з них більш «пітонічний», ніж інший?
Одне, що я помітив, це те, що в навчальному посібнику Django вони використовують другий метод для оголошення Моделей. Особисто я думаю, що другий метод є більш елегантним, але я хотів би знати, що таке "стандартний" спосіб.
self.attr = attr or []
у межах__init__
методу. Він досягає того самого результату (я думаю), і все ще зрозумілий та читабельний.