TGViewer
Реальный Python Реальный Python @python_real · 3.64K subscribers
Post #981 937
Методы экземпляра, класса и статические методы в Python — просто о сложном

В Python у нас есть три типа методов: экземпляра (instance methods), классовые (class methods) и статические (static methods). Все они определяются внутри класса, но различаются по тому, как они работают и как к ним обращаться.

🧩 Методы экземпляра

Это наиболее распространённый тип. Они автоматически получают первым аргументом ссылку на объект (self), через который можно обращаться к атрибутам и другим методам этого объекта.


class MyClass:
def instance_method(self):
print(f'Вызван instance_method: {self}')


Вызывается через экземпляр:


obj = MyClass()
obj.instance_method()


🧱 Классовые методы

Получают в качестве первого аргумента сам класс (cls). Это позволяет работать с атрибутами класса, а не отдельного объекта.


class MyClass:
@classmethod
def class_method(cls):
print(f'Вызван class_method: {cls}')


Вызывается через класс или экземпляр:


MyClass.class_method()
obj.class_method()


Часто используется как альтернативный конструктор:


class Book:
def __init__(self, title, author):
self.title = title
self.author = author

@classmethod
def from_string(cls, book_str):
title, author = book_str.split(' - ')
return cls(title, author)


🧊 Статические методы

Не получают ни self, ни cls. Это просто функции, определённые в теле класса для логической организации, когда они имеют отношение к классу, но не используют его состояние.


class MyClass:
@staticmethod
def static_method():
print('Вызван static_method')


Вызывается так же:


MyClass.static_method()
obj.static_method()


🤔 Когда использовать какой метод?

- Используйте методы экземпляра, если нужно работать с данными конкретного объекта.
- Используйте классовые методы, если работаете с самим классом (например, создаёте объекты по альтернативной логике).
- Используйте статические методы, если метод связан с классом логически, но не требует доступа ни к данным экземпляра, ни к атрибутам класса.


https://realpython.com/instance-class-and-static-methods-demystified/

#python

👉 @python_real
  • 👍 3
More from @python_real
  1. Sep 22, 2026🔴 Тестовый собес на Middle Python с разработчиком из Яндекса завтра вечером! [+ разбор 50…
  2. Sep 22, 2026📊 Статистика в Python: с чего начать анализ данных Среднее значение может скрыть важную д…
  3. Sep 21, 2026🐍 В Python 3.15 появится frozendict - словарь, который нельзя изменить Это встроенный тип…
  4. Sep 1, 2026🔍Тестовое собеседование на Middle Python с разработчиком из Авито завтра вечером Уже завт…
  5. Sep 1, 2026🐍 Асинхронное программирование в Python: от генераторов до asyncio Почему обычная програм…
  6. Aug 24, 2026🐍 Как использовать Claude Code для разработки и отладки проектов на Python Real Python оп…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →