python修饰器

2019-12-21  本文已影响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、各种方法的原则

各种方法定义规则 :

上一篇下一篇

猜你喜欢

热点阅读