zoukankan      html  css  js  c++  java
  • cls

    class : python中cls代表的是类的本身,相对应的self则是类的一个实例对象。

    class Person(object):
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        # 定义一个build方法,返回一个person实例对象,这个方法等价于Person()。
        @classmethod
        def build(cls):
            # cls()等于Person()
            p = cls("Tom", 18)    #等同于p = Person("Tom", 18)
            print('cls:', cls)
            return p
    
    
    if __name__ == '__main__':
        person = Person.build()
        print(person, person.name, person.age)
    

    classmethod

    说到cls也顺便提提classmethod, 类的方法, 不需要实例化即可调用

    classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,
    第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。

    class A(object):
    
        # 属性默认为类属性(可以给直接被类本身调用)
        num = "类属性"
    
        # 实例化方法(必须实例化类之后才能被调用)
        def func1(self): # self : 表示实例化类后的地址id
            print("func1")
            print(self)
    
        # 类方法(不需要实例化类就可以被类本身调用)
        @classmethod
        def func2(cls):  # cls : 表示没用被实例化的类本身
            print("func2")
            print(cls)
            print(cls.num)
            cls().func1()
    
        # 不传递传递默认self参数的方法(该方法也是可以直接被类调用的,但是这样做不标准)
        def func3():
            print("func3")
            print(A.num) # 属性是可以直接用类本身调用的
        
    # A.func1() 这样调用是会报错:因为func1()调用时需要默认传递实例化类后的地址id参数,如果不实例化类是无法调用的
    A.func2()
    A.func3()
    
  • 相关阅读:
    Fix Installing .NET Framework 3.5 failed Error Code 0x800F0954 on Windows 10
    RHEL8安装五笔输入法
    Enable EPEL and Local Repository on RHEL8
    Why is Yum Replaced by DNF?
    检查Linux服务器是否被攻击的常用命令及方法
    IDEA 主题
    IDEA 如何显示一个类中所有的方法
    Appium 安装以及安装过程中遇到的问题
    Maven 如何发布 jar 包到 Nexus 私库
    java泛型的基本使用
  • 原文地址:https://www.cnblogs.com/friedCoder/p/12572158.html
Copyright © 2011-2022 走看看