• 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
    复制代码
  • 相关阅读:
    Troubleshooting MySQL Memory Usage
    Innodb Log checkpointing 和 dirty Buffer pool pages的关系
    MySQL pager 命令有趣的用法
    测定INNODB REDO LOGS的写入量
    max_allowed_packet & Mysqldump
    链接MyISAM文件
    RFID常识
    C++的程序的文件结构(zt)
    使用C#开发ActiveX控件(zt)
    RFID自动识别术语解释(zt)
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14880979.html
Copyright © 2020-2023  润新知