Найти - Пользователи
Полная версия: classmethod
Начало » Python для новичков » classmethod
1
romankrv
Разъясните пожайлуста назначение встроенной функции “classmethod”. Для чего ее применяют и какие ее основные use-case-ы

Спасибо.
Ferroman
Третья ссылка
ZAN
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?'
Если метод декорирован декоратором classmethod, то метод можно вызывать даже до создания экземпляра класса:
>>> A.change_foo('foo!')
>>> A.foo
'foo!'
ivanff
спасибо!
malinich
ZAN
classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.
очень понятно, вам бы книгу писать. очень-очень доходчиво обьяснено, спс
paint666
ZAN, специально зарегистрировался чтобы написать что вы ооооооочень доходчиво и все объяснили, без лишних слов и понятно. Огромное спасибо
zo0M
ZAN
classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.
это лучшее объяснение, что я видел в интернете, спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB