Junior — Middle
23
Чем отличаются classmethod и staticmethod в Python?
Ответ от нейросети
sobes.tech AI
classmethod и staticmethod — это два типа методов в Python, которые отличаются тем, как они получают доступ к классу и его данным.
-
@classmethod — метод, который получает первым аргументом сам класс (
cls), а не экземпляр. Это позволяет методу работать с классом, изменять его состояние или создавать новые экземпляры. -
@staticmethod — метод, который не получает автоматически ни экземпляр (
self), ни класс (cls). Это обычная функция, которая логически связана с классом, но не зависит от его состояния.
Пример:
class MyClass:
count = 0
def __init__(self):
MyClass.count += 1
@classmethod
def get_count(cls):
return cls.count
@staticmethod
def greet(name):
return f"Hello, {name}!"
obj = MyClass()
print(MyClass.get_count()) # Выведет количество созданных объектов
print(MyClass.greet('Alice')) # Выведет приветствие
Итого:
classmethodможет изменять или использовать состояние класса.staticmethod— просто функция внутри класса, не зависящая от класса или экземпляра.