zoukankan      html  css  js  c++  java
  • Python之内置装饰器

    一、Python类方法

    Python 类方法和实例方法相似,类方法必须要有第一个参数,通常传cls(也可以传self),cls指向类本身。

    和实例方法最大的不同在于,类方法需要使用@classmethod修饰符进行修饰。

    (1)类不能直接调用类中的函数,必须加@classmethod才能直接调用。

            若不加@classmethod,就是普通函数,通过实例化的方法调用

    (2)类方法中不能直接调用实例方法和实例变量(即普通方法和普通变量)

    (3)类方法中可以调用其他类方法和类变量

    class MethodClass:
        CLASS_Prama=12
        def __init__(self):
            self.name="Balllyh"
            self.age=25
    
        @classmethod
        def class_method(cls):
            print("这是一个类方法",cls.CLASS_Prama)#类函数,可以直接调用
    
    #类方法推荐直接使用类名调用
    MethodClass.class_method()
    print(MethodClass.CLASS_Prama)
    
    #也可以使用实例对象去调用,但不推荐
    mer=MethodClass()
    mer.class_method()

     

     二、静态方法

    静态方法使用@staticmethod装饰器,没有类似 self、cls 这样的特殊参数。

    静态方法无法直接使用任何类变量,类方法,或者实例方法,实例变量

    调用:直接使用类名调用,也可以使用实例方法调用

    class MethodDemo:
        param_1=0
        @staticmethod
        def static_demo():
            print("这是一个静态方法")
    
    #调用,直接使用类名调用
    MethodDemo.static_demo()
    
    #也可以使用实例化方法调用
    de=MethodDemo
    de.static_demo()

    三、使用场景

    @classmethod,不修改原有函数的功能,在原函数基础上,增加新功能,将新功能写成类函数,进行调用使用

  • 相关阅读:
    快学scala习题解答--第五章 类
    从头认识java-18.2 主要的线程机制(2)-Executors的使用
    关于Bootstrap的理解
    Raw-OS源代码分析之idle任务
    Scilab 的画图函数(3)
    HDU2586.How far away ?——近期公共祖先(离线Tarjan)
    Codeforces Round #311 (Div. 2) A,B,C,D,E
    presto访问 Azure blob storage
    Presto集群安装配置
    Presto架构及原理
  • 原文地址:https://www.cnblogs.com/balllyh/p/15737789.html
Copyright © 2011-2022 走看看