zoukankan      html  css  js  c++  java
  • python之内置装饰器(property/staticmethod/classmethod)

    python内置了property、staticmethod、classmethod三个装饰器,有时候我们也会用到,这里简单说明下

    1、property

    作用:顾名思义把函数装饰成属性

    一般我们调用类方法成员,都是如下写法:

    class propertyTest():
        def __init__(self,x,y):
            self.x = x
            self.y = y
    
        def square(self):
            return self.x * self.y
    
    pt = propertyTest(3,5)
    print(pt.square())
    

    这里一看square就是类的一个方法,但如果把他写成如下形式,那么就不确定调用的一定是类方法:

    class propertyTest():
        def __init__(self,x,y):
            self.x = x
            self.y = y
    
        @property
        def square(self):
            return self.x * self.y
    
    pt = propertyTest(3,5)
    print(pt.square)
    

    这里调用方法类似调用了一个成员变量一样,如果写成print(pt.square())编译器会报错

    这就是property的用法, 把一个方法变成一个变量来调用

    2、staticmethod

    作用:不需要实例化,直接可以调用类中的方法,如下所示

    class A():
        def __init__(self):
            pass
    
        @staticmethod
        def plus(x,y):
            print(x*y)
    
    c = A()
    c.plus(2,3)
    A.plus(4,5)
    

    我们可以实例化类A,然后调用方法plus,也可以直接类.方法调用

    3、classmethod

    作用:和staticmethod类似,不同的是把调用的类作为第一个参数传入,如下:

    class A():
        def __init__(self):
            pass
    
        @classmethod
        def plus(cls,x,y):
            print(cls)
            print(x*y)
    
    A.plus(4,5)
    c = A()
    c.plus(5,6)
    

    这里print(cls)打印的是类A,其他用法同staticmethod

  • 相关阅读:
    Python批量爬取唯美类图片
    查找Windows启动程序
    在Windows10中进行蓝屏排查
    在Windows 10中应该记住的完整的多指触摸板手势
    通过命令行工具远程注销用户
    Windows 7,8.1和10中的隐藏退出资源管理器选项
    找出正在使用的全局热键
    windows10中创建环境变量
    mysql高级(锁机制)
    mysql高级(查询截取分析)
  • 原文地址:https://www.cnblogs.com/watertaro/p/9419537.html
Copyright © 2011-2022 走看看