Разъясните пожайлуста назначение встроенной функции “classmethod”. Для чего ее применяют и какие ее основные use-case-ы
Спасибо.
>>> class A:
... @classmethod
... def fun(cls):
... print cls
...
>>> a = A()
>>> a.fun()
__main__.A
>>> class A:
... foo = 'foo'
... @classmethod
... def change_foo(cls, value):
... cls.foo = value
...
>>> a = A()
>>> b = A()
>>> a.foo
'foo'
>>> a.foo = 'foo?' #добавит аттрибут экземпляра, который спрячет за собой аттрибут класса
>>> a.foo #как видим, аттрибут изменен
'foo?'
>>> b.foo #однако для другого экземпляра аттрибут foo остался неизменным
'foo'
>>> a.change_foo('foo?')#здесь меняем аттрибут класса
>>> b.foo
'foo?'
>>> A.change_foo('foo!')
>>> A.foo
'foo!'
ZANочень понятно, вам бы книгу писать. очень-очень доходчиво обьяснено, спс
classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.
ZANэто лучшее объяснение, что я видел в интернете, спасибо.
classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.