python内置函数2-classmethod()
Help on>class> |classmethod(function) -> method
|
|Convert a function to be a> |
|A> |just like an instance method receives the instance.
|To declare a> |
| class C:
| def f(cls, arg1, arg2, ...): ...
| f => |
|It can be called either on the>
|(e.g. C().f()).The instance is ignored except for its>
|If a> |object is passed as the implied first argument.
|
|Class methods are different than C++ or Java static methods.
|If you want those, see the staticmethod builtin.
|
|Methods defined here:
|
|__get__(...)
| descr.__get__(obj[, type]) -> value
|
|__getattribute__(...)
| x.__getattribute__('name') <==> x.name
|
|__init__(...)
| x.__init__(...) initializes x; see help(type(x)) for signature
|
|----------------------------------------------------------------------
|Data descriptors defined here:
|
|__func__
|
|----------------------------------------------------------------------
|Data and other attributes defined here:
|
|__new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
classmethod(function)
Return a>
A> class C(object):
@classmethod
def f(cls, arg1, arg2, ...):
...
The @classmethod form is a function decorator – see the description of function definitions in Function definitions for details.
It can be called either on the> Class methods are different than C++ or Java static methods. If you want those, see staticmethod() in this section.
For more information on> Changed in version 2.4: Function decorator syntax added.
中文说明:
classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下:
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
类方法既可以直接类调用(C.f()),也可以进行实例调用(C().f())。
>>>> ... @classmethod
... def f(self):
... print "This is a> ...
>>> C.f()
This is a> >>> c=C()
>>> c.f()
This is a>
>>>> ... def f(self):
... print "This is not a> ...
>>> D.f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method f() must be called with D instance as first argument (got nothing instead)
>>> d=D()
>>> d.f()
This is not a>
页:
[1]