python的cls函数,cls是什么函数

什么时候使用python类cls方法

cls是class的缩写。

专注于为中小企业提供成都做网站、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业碧江免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

class A:

member = "this is a test."

def __init__(self):

pass

@classmethod

def Print1(cls):

#杩欎釜鏄被鏂规硶

print "print 1: ", cls.member

def Print2(self):

print "print 2: ", self.member

@classmethod

def Print3(paraTest):

print "print 3: ", paraTest.member

a = A()

A.Print1() #相当于Print1(A)

a.Print2() #相当于Print2(a), 请注意@classmethod

A.Print3()

可以看出来,python在通过“.”调用成员函数的时候,会将“.”前面的东西当作函数的第一个参数调用。

而且pyhon并不关心我们把类的成员函数的第一个参数的名称是什么,我们可以用任意的名称,可以看Print3的定义就知道了。

python中的cls到底指的是什么,与self有什么区别

普通的方法,第一个参数需要是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'

python 类中的变量传递给类中的函数

为了把类中的变量传递给类中的函数,我们需要用到3个特定格式

① 第一个格式 @classmethod 的中文意思就是“类方法”,@classmethod声明了函数1是类方法,这样才能允许函数1使用类属性中的数据。

② 第二个格式 cls 的意思是class的缩写。如果类方法函数1想使用类属性(也就是类中的变量),就要写上cls为函数1的第一个参数,也就是把这个类作为参数传给自己,这样就能被允许使用类中的数据。

③ 第三个格式是 cls.变量 。类方法想使用类属性的时候,需要在这些变量名称前加上cls. 这就好比类方法和类之间的约法三章,所以但凡有任何格式错误都会报错。

如果缺①,即缺了“@classmethod”,类方法就不能直接利用类中的属性,于是报错


网页名称:python的cls函数,cls是什么函数
路径分享:http://scyanting.com/article/dsceiee.html