Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 28, 2008 20:47:39

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

classmethod

Разъясните пожайлуста назначение встроенной функции “classmethod”. Для чего ее применяют и какие ее основные use-case-ы

Спасибо.

Офлайн

#2 Дек. 28, 2008 21:56:11

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Офлайн

#3 Дек. 30, 2008 10:01:47

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

classmethod

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!'



Офлайн

#4 Сен. 6, 2009 11:44:24

ivanff
От:
Зарегистрирован: 2008-10-25
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

classmethod

спасибо!



Офлайн

#5 Авг. 8, 2013 09:14:16

malinich
От:
Зарегистрирован: 2012-02-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

classmethod

ZAN
classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.
очень понятно, вам бы книгу писать. очень-очень доходчиво обьяснено, спс



Отредактировано malinich (Авг. 8, 2013 09:14:52)

Офлайн

#6 Сен. 12, 2013 06:38:18

paint666
Зарегистрирован: 2013-09-12
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

classmethod

ZAN, специально зарегистрировался чтобы написать что вы ооооооочень доходчиво и все объяснили, без лишних слов и понятно. Огромное спасибо

Отредактировано paint666 (Сен. 12, 2013 06:38:41)

Офлайн

#7 Март 9, 2018 18:16:28

zo0M
Зарегистрирован: 2018-03-09
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

classmethod

ZAN
classmethod - это декоратор, применяющийся для того, чтобы при вызове метода в качестве первого параметра передавался класс, а не экземпляр.
это лучшее объяснение, что я видел в интернете, спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version