Python教程

python中cls关键字

本文主要是介绍python中cls关键字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.python中cls用法

https://www.zhihu.com/question/49660420

复制代码
class A(object):
    a = 'a'
    @staticmethod
    def foo1(name):
        print('hello', name)
    def foo2(self, name):
        print ('hello', name)
    @classmethod
    def foo3(cls, name):
        print ('hello', name)
A.foo1('hhh')
A.foo3('clssss')

#输出:
hello hhh
hello clssss
复制代码

简单来说,就是cls用在@classmethod方法中,使得该方法仅通过类名就可以访问,无需建立对象;csl就相当于普通类函数中的self参数,通过它就可以防止硬编码,而访问类中的属性和函数

复制代码
class A(object):
    a = 'a'
    def __init__(self,a,b):
        print(a,b)

    @classmethod
    def foo3(cls, name):
        print ('hello', name)
        a,b=1,2
        cls(a,b)
A.foo3('clssss')

#输出:
hello clssss
1 2
复制代码

 就可以直接调用了__init__函数,初始化了。当然如果存在类继承,就会是这个样子,会运行B的初始化函数,我也是惊呆了。

复制代码
class A(object):
    a = 'a'
    def __init__(self,a,b):
        print(a,b)

    @classmethod
    def foo3(cls, name):
        print ('hello', name)
        a,b=1,2
        cls(a)#在这里调用了b的初始化函数

class B(A):
    def __init__(self,a):
        print('B',a)
B.foo3('clssss')

#输出:
hello clssss
B 1
复制代码

 再稍微照着bert修改一下:

复制代码
class A(object):
    a = 'a'
    def __init__(self,a,b):
        print(a,b)

    @classmethod
    def foo3(cls, name):
        print ('hello', name)
        a,b=1,2
        model=cls(a)
        return model  #可以返回一个B的对象
class B(A):
    def __init__(self,a):
        self.b=a
        print('B',a)
b=B.foo3('clssss')#这里通过B来调用类函数~~~其实也就和A没啥关系了,只不过实现放在了A中而已

#输出:
hello clssss
B 1
>>> b.b
1
复制代码

 

这篇关于python中cls关键字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!