hwang.me 发表于 2020-5-25 22:04:52

关于修饰器的问题

问题我标注在了 代码中了, 但是我还是有一个问题。。 在定义一个类的时候 为什么 有时候是 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())

永恒的蓝色梦想 发表于 2020-5-25 22:07:04

class x 等价于 class x() 等价于 class x(object)

hwang.me 发表于 2020-5-25 22:09:32

永恒的蓝色梦想 发表于 2020-5-25 14:07
class x 等价于 class x() 等价于 class x(object)

真的假的 小姐姐, 那我代码中备注的问题呢 求姐姐指点

Twilight6 发表于 2020-5-25 22:14:14

hwang.me 发表于 2020-5-25 22:09
真的假的 小姐姐, 那我代码中备注的问题呢 求姐姐指点

哈哈哈哈 小姐姐 {:10_297:}

青出于蓝 发表于 2020-5-25 22:15:14

class的()确实是隐藏的。可有可无,跟def函数有区别。class的参数也是同理,可有可无。
建议复习一下甲鱼的,类和对象{:10_277:}

青出于蓝 发表于 2020-5-25 22:16:33

return的返回......

永恒的蓝色梦想 发表于 2020-5-25 22:18:06

hwang.me 发表于 2020-5-25 22:09
真的假的 小姐姐, 那我代码中备注的问题呢 求姐姐指点

return call 是返回了一个函数

Stubborn 发表于 2020-5-26 00:59:14

class(object): 在py2中,规定,class没有父类,必须要要继承object,格式需要这么书写,而在py3中,class X, 有时候是class(), 有时候是class(object),只要类没有继承父类或者超类,都默认继承了object类,所有三个都一样,在py中,会有书写语法错误


2, 装饰器,return call   这个call 是一个函数,函数地址可以被返回,和引用

如果f():代码不使用装饰器,等价调用:timeslong(f)()

Stubbron敲码不易~如果有帮助到你,记得给#4的Twilight6最佳鼓励吧~

hwang.me 发表于 2020-5-26 03:43:24

Twilight6 发表于 2020-5-25 14:14
哈哈哈哈 小姐姐

难道又是 小哥哥吗

hwang.me 发表于 2020-5-26 03:44:48

青出于蓝 发表于 2020-5-25 14:15
class的()确实是隐藏的。可有可无,跟def函数有区别。class的参数也是同理,可有可无。
建议复习一下甲 ...

唔唔唔我最近一直在学好挫败

Twilight6 发表于 2020-5-26 06:51:11

Stubborn 发表于 2020-5-26 00:59
class(object): 在py2中,规定,class没有父类,必须要要继承object,格式需要这么书写,而在py3中,class...

{:10_277:},哈哈你这家伙{:10_266:}

Twilight6 发表于 2020-5-26 09:25:40

hwang.me 发表于 2020-5-26 03:43
难道又是 小哥哥吗

{:10_245:}不知道,他也没反驳 说不定就是小姐姐
页: [1]
查看完整版本: 关于修饰器的问题