Разница между @staticmethod и @classmethod в Python

Python @classmethod означает, что при вызове этого метода мы передаем класс как первый аргумент вместо экземпляра этого класса («self»). Функция @classmethod также может быть вызвана без создания экземпляра класса, но ее определение следует подкласс Sub, а не родительский класс, через наследование, может быть переопределено подклассом. Это потому, что первым аргументом для функции @classmethod всегда должен быть cls (класс). Кроме того, @classmethod важен, когда вы хотите написать фабричный метод, и этот пользовательский атрибут может быть прикреплен в классе. Этот атрибут (ы) может быть переопределен в унаследованном классе.

 
@classmethod
def some_class_method(cls, *args, **kwds):
   pass

Статический метод - это метод, который ничего не знает о классе или экземпляре, на который он был вызван. @staticmethod означает, что когда этот метод вызывается, мы не передаем ему экземпляр класса. Это означает, что нет необходимости передавать неявный аргумент, например self или cls. Он может быть вызван без создания экземпляра класса. Это определение неизменно через наследование. В Python это бесполезно, потому что вы можете просто использовать функцию модуля вместо staticmethod.

 
@staticmethod
def some_static_method(*args, **kwds):
    pass

Источник: http://net-informations.com/python/iq/method.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,00 из 5)
Adblock
detector