美文网首页
python修饰器

python修饰器

作者: 陆寒晨 | 来源:发表于2019-12-21 21:18 被阅读0次

1、参数args与kwargs:

*args是元组,如def fun(args): pass 传过去的参数是元组形式fun(1,2,3),args=(1,2,3);
*kwargs是字典型,如def fun(kwargs): pass 传过去的参数是元组形式fun(a=1,b=2,c=3),kwargs={"a":1,"b":2,"c":3};

2、@property修饰器

被修饰的方法,将可直接被当作类属性进行调用,使得python语言更加的简洁。

class Dec:
    @property
    def value(self):
        return self.__value

    @value.setter
    def value(self, data):
        self.__value = data

if __name__ == '__main__':
    dec = Dec()
    dec.value = 10
    print(dec.value)

/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10

Process finished with exit code 0

【注意】所传的值必须是私有变量,即self.__value。

3、@classmethod类方法修饰器

类方法:python中的类方法指的是可以直接用类名(也可用实例名)进行调用的方法,相当与java中的static方法。

class Dec:


    @property
    def value(self):
        return self.__value

    @value.setter
    def value(self, data):
        self.__value = data

    @classmethod
    def info(cls,data):
        print('我是一个类方法,参数是>>'+str(data))


if __name__ == '__main__':
    dec = Dec()
    dec.value = 10
    print(dec.value)
    Dec.info(20)

下面添加类方法的注解,python中的类方法,相当于Java中的static修饰的方法,输出结果为:

/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10
我是一个类方法,参数是>>20

Process finished with exit code 0

4、静态方法修饰器

静态方法:不依赖于python类及类实例,放在类里边仅仅是为了管理方便,其实也可以放到类外边

class Dec:


    @property
    def value(self):
        return self.__value

    @value.setter
    def value(self, data):
        self.__value = data

    @classmethod
    def info(cls,data):
        print('我是一个类方法,参数是>>'+str(data))

    @staticmethod
    def staticInfo(data):
        print('我是一个静态方法,参数是>>'+str(data))


if __name__ == '__main__':
    dec = Dec()
    dec.value = 10
    print(dec.value)
    Dec.info(20)
    dec.info(30)
    dec.staticInfo(40)
    Dec.staticInfo(50)

/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10
我是一个类方法,参数是>>20
我是一个类方法,参数是>>30
我是一个静态方法,参数是>>40
我是一个静态方法,参数是>>50

Process finished with exit code 0

5、各种方法的原则

各种方法定义规则 :

  • 只访问成员变量的方法 ,定义成实例方法
  • 只访问类变量的方法 , 定义类方法
  • 既访问成员变量 , 也访问类变量的方法 , 定义成实例方法
  • 既不访问成员变量 , 也不访问类变量 ,定义成静态方法

相关文章

  • Python修饰器

    前话: python的修饰器可以说是python语言最有灵性的一个功能了,看到网上有各种乱乱的文章,所以想自己写得...

  • python修饰器

    介绍修饰器之前首先要介绍两个参数 基础用法 传递参数 *报错 这个修饰器可以简化 functools已经封装好了

  • python修饰器

    1 什么是装饰器 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象。本质就是函数,功能就...

  • python修饰器

    1、参数args与kwargs: *args是元组,如def fun(args): pass 传过去的参数是元组形...

  • python 修饰器

    python编程时首次遇到@staticmethod,就开始了我的修饰器之路 下面链接作者写的很好 https:/...

  • Python基础手册25——装饰器

    一、装饰器 装饰器背后的主要动机源自 python 面向对象编程。装饰器是在函数调用之上的修饰。这些修饰仅是当声明...

  • Python 中修饰器

    修饰器就是一个返回函数的高阶函数 如果decorator本身需要传入参数,那就需要编写一个返回decorator的...

  • 谈谈python修饰器

    前言 对python的修饰器的理解一直停留在"使用修饰器把函数注册为事件的处理程序"的层次,也是一知半解;这样拖着...

  • Python修饰器模式

    修饰器模式,可以对一个函数、类添加一层封装。

  • Python函数修饰器

    假设我们写一个小函数,打印当前的时间和一个随机整数,代码如下: 运行的结果是: 假设,我们想周期性的打印随机数,而...

网友评论

      本文标题:python修饰器

      本文链接:https://www.haomeiwen.com/subject/imagnctx.html