Статический метод и self в ООП в Python
Внутри статических методов недоступен self.
Это происходит из-за того, что статические методы
могут вызываться вне контекста объекта,
просто обращаясь к имени класса.
В обычных методах доступны как свойства класса, так и обычные свойства.
Давайте посмотрим на примерах. Пример на обычный метод:
class Test:
class_property = 'static'
def __init__(self):
self.usual_property = 'usual'
def method(self):
print(self.class_property) # выведет 'static'
print(self.usual_property) # выведет 'usual'
test = Test()
test.method()
Пример на статический метод:
class Test:
class_property = 'static'
def __init__(self):
self.usual_property = 'usual'
@staticmethod
def method():
print(Test.class_property) # выведет 'static'
print(self.usual_property) # выдаст ошибку
test = Test()
test.method()