码迷,mamicode.com
首页 > 编程语言 > 详细

python中面向切片编程(AOP)和装饰器

时间:2019-01-19 18:51:36      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:类方法   return   room   java   turn   self   family   elf   oom   

@函数名(类的描述符)相当于fuc = decorator(fuc)

装饰器:

def deco(fuc):
    print(‘============‘)
    return fuc
@deco
def foo():
    print(‘foo函数正在运行‘)

foo()

  

利用描述符自定制property

class Decorator:
    def __init__(self, fuc):
        self.fuc = fuc
    def __get__(self, instance, owner):
        print(‘这里是get‘)
        return self.fuc(instance)

class Room:
    def __init__(self, width, length):
        self.length = length
        self.width = width

    @Decorator# area = Decorator(area)
    def area(self):
        print(‘执行了area函数‘)
        return self.length*self.width

room = Room(1,2)
print(room.area)

内置的装饰器

内置的装饰器有三个,分别是staticmethod、classmethod和property,作用分别是把类中定义的实例方法变成静态方法、类方法和类属性。由于模块里可以定义函数,所以静态方法和类方法的用处并不是太多,除非你想要完全的面向对象编程。而属性也不是不可或缺的,Java没有属性也一样活得很滋润。从我个人的Python经验来看,我没有使用过property,使用staticmethod和classmethod的频率也非常低。

 

python中面向切片编程(AOP)和装饰器

标签:类方法   return   room   java   turn   self   family   elf   oom   

原文地址:https://www.cnblogs.com/CK85/p/10292335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!