Форум сайта python.su
Разъясните пожайлуста назначение встроенной функции “classmethod”. Для чего ее применяют и какие ее основные use-case-ы
Спасибо.
Офлайн
Офлайн
classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.
>>> 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 - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.
Отредактировано malinich (Авг. 8, 2013 09:14:52)
Офлайн
ZAN, специально зарегистрировался чтобы написать что вы ооооооочень доходчиво и все объяснили, без лишних слов и понятно. Огромное спасибо
Отредактировано paint666 (Сен. 12, 2013 06:38:41)
Офлайн
ZANэто лучшее объяснение, что я видел в интернете, спасибо.
classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.
Офлайн