Python关于修饰符修饰对象(不能为类)的理解疑惑
"Python 的修饰符"“......只可以在模块或类定义内对函数进行修饰,不允许修饰一个类。......” ('小甲鱼'在练习中的注解)。但下面这个例子中,难道不算是在对一个类修饰吗?(Timeslong是一个类名啊。。。)class Timeslong():
def __init__(self,func):
self.f = func
def __call__(self):
start = time.clock()
print('It\'s time starting!')
self.f()
print('It\'s time ending!')
end = time.clock()
return "It\'s used:%s ."%(end - start)
import time
@Timeslong
def f():
y = 0
for i in range(10):
y = y+i+1
print(y)
return y
print(f())
他其实是修饰类里面的__init__函数 哦。。。虽一时还不能领悟,且按这思路细细去体会,希望自己能早点开惑。谢谢指教。 一般来说修饰器用方法来实现,也可以用类来实现(上面的例子)
用类来实现修饰器就可以借用类的一些特性来做点特别的东西。
但无论哪种实现方式,被修饰的只能是方法
@Timeslong #这是用类的方式来实现的修饰器
def f(): #这是被修饰的方法 mizai 发表于 2018-9-27 15:59
一般来说修饰器用方法来实现,也可以用类来实现(上面的例子)
用类来实现修饰器就可以借用类的一些特性来 ...
谢谢
页:
[1]