TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #2258 5.88K
​​​​​Самые популярные вопросы на собеседовании: «В чем разница между методами экземпляра, класса и статическими методами в Python?»

Методы экземпляра: принимают параметр self и относятся к определенному экземпляру класса.

Статические методы: используют декоратор @staticmethod, не связаны с конкретным экземпляром и являются автономными (атрибуты класса или экземпляра не изменяются).

Проиллюстрируем разницу на вымышленном классе CoffeeShop:
class CoffeeShop:
specialty = 'espresso'

def __init__(self, coffee_price):
self.coffee_price = coffee_price

# instance method
def make_coffee(self):
print(f'Making {self.specialty} for ${self.coffee_price}')

# static method
@staticmethod
def check_weather():
print('Its sunny')

# class method
@classmethod
def change_specialty(cls, specialty):
cls.specialty = specialty
print(f'Specialty changed to {specialty}')

У класса CoffeeShop есть атрибут specialty (фирменный напиток), установленный по умолчанию в значение 'espresso'. Каждый экземпляр CoffeeShop инициализируется с атрибутом coffee_price. У него также три метода: метод экземпляра, статический метод и метод класса.

Давайте инициализируем экземпляр с атрибутом coffee_price, равным 5. Затем вызовем метод экземпляра make_coffee:
coffee_shop = CoffeeShop('5')
coffee_shop.make_coffee()
#=> Making espresso for $5

Теперь вызовем статический метод. Статические методы не могут изменять состояние класса или экземпляра, поэтому обычно используются для служебных функций, например, сложения двух чисел. Наши проверяют погоду. Говорят, что солнечно:
coffee_shop.check_weather()
#=> Its sunny

Теперь используем метод класса для изменения фирменного напитка (specialty), а затем сделаем кофе (make_coffee):
coffee_shop.change_specialty('drip coffee')
#=> Specialty changed to drip coffee

coffee_shop.make_coffee()
#=> Making drip coffee for $5

Обратите внимание, что make_coffee раньше делал эспрессо, а теперь заваривает капельную кофеварку (drip coffee).
  • 👍 31
More from @zen_of_python
  1. Oct 13, 2026👁👁 Тестовый собес на Python с разработчиком из Яндекса [+ ответы на 50 сложных вопросов…
  2. Oct 13, 2026Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-ск…
  3. Oct 13, 2026Post #5059
  4. Oct 13, 2026Как менеджер паролей найдёт вашу форму Django Менеджер паролей обнаружил утечку и предлага…
  5. Oct 13, 2026Почему lru_cache удерживает объекты в памяти Декоратор lru_cache хранит аргументы и резуль…
  6. Oct 13, 2026Python 3.10 больше не получает исправления безопасности Версия 3.10.22 стала последней в с…
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 →