python中的装饰器

2016-06-17  本文已影响212人  yuanquan521

python中的装饰器

1. @property ['prɑpɚti]

@property装饰器就是负责把一个方法变成属性调用。

class Student(object):

    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self, value):
        self._birth = value

    @property
    def age(self):
        return 2014 - self._birth

上面的birth是可读写属性(。@property本身又创建了另一个装饰器@birth.setter,负责把一个setter方法变成属性赋值),而age就是一个只读属性(只定义getter方法,不定义setter方法就是一个只读属性)

廖雪峰的python教程

2. 静态方法(@staticmethod)

3. 类方法

4. 实例方法

# -*- coding:utf-8 -*-

"""
File Name : 'te'.py
Description:
Author: 'chengwei'
Date: '2016/6/2' '15:36'
"""

class Foo(object):
    inst_no = 0             # 类变量

    def __init__(self):
        self.a = 1          # 成员变量

    @classmethod
    def class_foo(cls, x):  #该方法可以通过类名直接调用,或者类实例调用
        print "executing class_foo(%s,%s)" % (cls, x)
        print cls.static_foo   # 类内调静态方法

    @staticmethod
    def static_foo(x):
        print "executing static_foo(%s)" % x


    def test(self):
        self.static_foo('a')
if __name__ == "__main__":
    Foo.static_foo('a')         # 类外调静态方法
    Foo.class_foo('b')          # 类外调类方法

    t = Foo()                   # 实例化
    print t.inst_no
    print t.a
    t.static_foo('a')
    t.class_foo('b')
    t.test()
上一篇 下一篇

猜你喜欢

热点阅读