python是面向对象的语言,它有类的继承,因此它是可以修改基类函数的功能。但是除了继承之外,类函数的功能也可以使用装饰器来修改,这种功能叫做装饰类。为了学习装饰类,需要好好地查看下面的代码:
#python 3.6
#定义装饰器函数
def decorator(aClass):
class newClass:
def __init__(self, age):
self.total_display = 0
self.wrapped = aClass(age)
def display(self):
self.total_display += 1
print("total display: ", self.total_display)
self.wrapped.display()
return newClass
#对类使用装饰器
@decorator
class Blog:
def __init__(self, age):
self.age = age
def display(self):
print("http://blog.csdn.net/caimouse age is", self.age)
#创建类对象
myBlog = Blog(15)
for i in range(3):
myBlog.display()
结果输出如下:
total display: 1
http://blog.csdn.net/caimouse age is 15
total display: 2
http://blog.csdn.net/caimouse age is 15
total display: 3
http://blog.csdn.net/caimouse age is 15
在这个例子里可以看到,定义了一个装饰器类的函数decorator,然后在它内部定义了一个类,这个类的方法与要被装饰类的方法一样名称。接着装饰函数返回这个类的类型,这个类型就可以拿来装饰别的类了。它的语法与使用装饰函数是一样的。