• 08 类属性、类方法、静态方法


    1 类属性

    1.1 类属性的定义

    类属性即定义在类中的属性。类是一个特殊的对象。定义方法为:在类中使用直接使用赋值语句定义:

    1.2 类属性的调用

    使用 类名.类属性名 的方式调用它,可以在任意地方使用此方法调用一个类的类属性。

    1.3 子类调用父类中的类属性

    子类实例可以直接调用父类中的类属性:子类实例.父类属性

    也可以使用:类名.类属性(或cls.类属性(cls表示class,self表示对象))的方式,在任意地方调用任意类的类属性

    class Human:
        count = 0  # 类属性的定义
        def __init__(self,name):
            self.name = name
            Human.count+=1  # 类属性的调用
    
    
    xiaoming = Human("小明")
    xiaohua = Human("小花")
    print("创建了%d个对象"% xiaoming.count) # 子类实例调用父类属性
    

      

    2 类方法

    2.1 类方法的定义

    类方法用:@classmethod来标记,此标记下的第一个方法即类方法

    2.2 类方法的调用

    类方法使用:类名.类方法名 来调用

    class Human:
        count = 0
        def __init__(self,name):
            self.name = name
            Human.count+=1
        @classmethod # 类方法的定义
        def show_count(cls):
            print("创建了%d个实例"%cls.count)
    
    xiaoming = Human("小明")
    xiaohua = Human("小花")
    Human.show_count() #类方法的调用
    

      

    3 静态方法

    3.1 静态方法的概念

    在类中,如果一个方法:既不调用实例属性和实例方法,也不需要调用类属性和类方法。就可以考虑把这个方法定义为静态方法。

    3.2 静态方法的定义

    使用:@staticmethod 来声明下面的第一个方法为静态方法。

    class Dog:
        @staticmethod
        def bark():
            print("汪汪汪")
    

      值得注意的是:静态方法的括号中没有参数,因为它不需要调用任何东西。

  • 相关阅读:
    如何测试私有/受保护的方法? (译文)
    推荐一款vs.net中的版本号管理工具,
    ILMerge 合并多个程序集为一个.
    https://XXX/.xml Error:800C000E
    an easy way to debug windows service in .net
    提高安全性, 删除IIS中的response http header
    我的<程序人生>的一点看法.
    vs.net 2005 beta2 之痛
    ANT打包
    Linq to xml: XDocument对象
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/11720283.html
Copyright © 2020-2023  润新知