关于修饰器的问题
问题我标注在了 代码中了, 但是我还是有一个问题。。 在定义一个类的时候 为什么 有时候是 class X, 有时候是class(), 有时候是class(object)啊? 求大佬为小萌新解答。。 爱你们{:10_298:}import time
def timeslong(func):
def call():
start = time.clock()
print("It's time starting ! ")
func()
print("It's time ending ! ")
end = time.clock()
return "It's used : %s ." % (end - start)
return call # 这里return call 最后return的是什么?? 为什么没有(),是实例化了吗??
# 在哪里实例化的?
@timeslong
def f():
y = 0
for i in range(10):
y = y + i + 1
print(y)
return y
print(f()) class x 等价于 class x() 等价于 class x(object) 永恒的蓝色梦想 发表于 2020-5-25 14:07
class x 等价于 class x() 等价于 class x(object)
真的假的 小姐姐, 那我代码中备注的问题呢 求姐姐指点 hwang.me 发表于 2020-5-25 22:09
真的假的 小姐姐, 那我代码中备注的问题呢 求姐姐指点
哈哈哈哈 小姐姐 {:10_297:} class的()确实是隐藏的。可有可无,跟def函数有区别。class的参数也是同理,可有可无。
建议复习一下甲鱼的,类和对象{:10_277:} return的返回...... hwang.me 发表于 2020-5-25 22:09
真的假的 小姐姐, 那我代码中备注的问题呢 求姐姐指点
return call 是返回了一个函数 class(object): 在py2中,规定,class没有父类,必须要要继承object,格式需要这么书写,而在py3中,class X, 有时候是class(), 有时候是class(object),只要类没有继承父类或者超类,都默认继承了object类,所有三个都一样,在py中,会有书写语法错误
2, 装饰器,return call 这个call 是一个函数,函数地址可以被返回,和引用
如果f():代码不使用装饰器,等价调用:timeslong(f)()
Stubbron敲码不易~如果有帮助到你,记得给#4的Twilight6最佳鼓励吧~ Twilight6 发表于 2020-5-25 14:14
哈哈哈哈 小姐姐
难道又是 小哥哥吗 青出于蓝 发表于 2020-5-25 14:15
class的()确实是隐藏的。可有可无,跟def函数有区别。class的参数也是同理,可有可无。
建议复习一下甲 ...
唔唔唔我最近一直在学好挫败 Stubborn 发表于 2020-5-26 00:59
class(object): 在py2中,规定,class没有父类,必须要要继承object,格式需要这么书写,而在py3中,class...
{:10_277:},哈哈你这家伙{:10_266:} hwang.me 发表于 2020-5-26 03:43
难道又是 小哥哥吗
{:10_245:}不知道,他也没反驳 说不定就是小姐姐
页:
[1]