您的位置:首页 > 编程语言 > Python开发

Python class method

2016-03-20 17:50 513 查看
classmethod
(function)
Return a class method for function.
A class method receives the class as implicit first argument, just like an instance method receives the instance. To declare a class method, use this idiom:

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 (such as
C.f()
) or on an instance (such as
C().f()
).
The instance is ignored except for its class. If a class method is called for a derived class, the derived class object is passed as the implied first argument.
Class methods are different than C++ or Java static methods. If you want those, see
staticmethod()
in
this section.
For more information on class methods, consult the documentation on the standard type hierarchy in The
standard type hierarchy.

New in version 2.2.

Changed in version 2.4: Function decorator syntax added.


python中self,cls

普通的方法,第一个参数需要是self,它表示一个具体的实例本身。

如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用。

而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身。

>>> class A(object):

def foo1(self):

print "Hello",self

@staticmethod

def foo2():

print "hello"

@classmethod

def foo3(cls):

print "hello",cls

>>> a = A()

>>> a.foo1() #最常见的调用方式,但与下面的方式相同

Hello <__main__.A object at 0x9f6abec>

>>> A.foo1(a) #这里传入实例a,相当于普通方法的self

Hello <__main__.A object at 0x9f6abec>

>>> A.foo2() #这里,由于静态方法没有参数,故可以不传东西

hello

>>> A.foo3() #这里,由于是类方法,因此,它的第一个参数为类本身。

hello <class '__main__.A'>

>>> A #可以看到,直接输入A,与上面那种调用返回同样的信息。

<class '__main__.A'>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: