🔖 Справочник команд и синтаксиса

⚡ Краткий справочник

  • class A: x = 1 — атрибут класса.
  • self.x = 1 — атрибут объекта.
  • @classmethod def m(cls): ... — метод класса.
  • @staticmethod def m(): ... — статический метод.
  • __str__ — строка для пользователя.
  • __repr__ — строка для разработчика.
  • obj.__dict__ — словарь атрибутов объекта.

Общий синтаксис

class ClassName:
    class_attribute = value          # атрибут класса

    def __init__(self, value):
        self.instance_attribute = value  # атрибут объекта

    def method(self):                # обычный метод
        ...

    @classmethod
    def class_method(cls):           # классовый метод
        ...

    @staticmethod
    def static_method():             # статический метод
        ...

    def __str__(self) -> str:        # строковое представление
        return "..."

    def __repr__(self) -> str:       # техническое представление
        return "..."

Сравнение типов методов

Тип метода Декоратор Первый аргумент Доступ Когда использовать
Обычный метод self К полям и методам объекта Когда метод работает с конкретным экземпляром
Классовый метод @classmethod cls К полям и методам класса Когда метод работает с классом или создаёт объекты по шаблону
Статический метод @staticmethod Когда функция логически относится к классу, но не использует ни self, ни cls

Способы доступа к атрибутам

ЗаписьЧто делаетПример
ClassName.attrЧтение/изменение атрибута классаBook.library_name
obj.attrЧтение: сначала объект, потом класс; запись: только в объектbook.library_name
self.attrЧтение атрибута объекта или класса внутри методаself.title
obj.__dict__Словарь собственных атрибутов объектаbook.__dict__
ClassName.__dict__Словарь атрибутов и методов классаBook.__dict__

Магические методы

МетодКогда вызываетсяЧто должен делать
__init__(self, ...)При создании объектаИнициализировать атрибуты объекта
__str__(self)print(obj), str(obj)Вернуть читаемую строку для пользователя
__repr__(self)repr(obj), вывод в коллекцияхВернуть техническое представление, желательно пригодное для воссоздания объекта

Параметры и аннотации

ПараметрТипОписание
selfэкземпляр классаСсылка на текущий объект в обычном методе
clsклассСсылка на класс в @classmethod
-> strаннотацияПодсказка о типе возвращаемого значения (не влияет на выполнение)
Проверить по документации: аннотации типов в таблице выходят за рамки исходного материала. Подробнее см. typing.
Проверить по документации: встроенные функции classmethod и staticmethod описаны в Built-in Functions.