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()
    
  • 相关阅读:
    SDN第四次上机作业
    SDN第四次作业
    SDN第三次上机作业
    SDN第三次作业
    SDN第二次上机作业
    SDN第二次作业
    个人作业——软件产品案例分析(待更)
    软工 实验三 需求分析(沈樟伟组)
    个人博客二:需求分析
    微软小娜APP的案例分析
  • 原文地址:https://www.cnblogs.com/friedCoder/p/12572158.html
Copyright © 2011-2022 走看看