太阳花田 发表于 2017-4-24 14:23:45

看得有点晕

太阳花田 发表于 2017-4-28 10:25:54

过段时间来看果然比上次看能看懂多一些了 虽然还是没全看懂下次再来{:10_256:}

six_mao 发表于 2017-5-3 21:57:22

函数指针。

six_mao 发表于 2017-5-3 22:02:53

解释器读到这样的修饰之后,会先解析@后的内容,直接就把@下一行的函数或者类作为@后边的函数的参数,然后将返回值赋值给下一行修饰的函数对象。这样解释下可能更清晰了吧。

wyh2006 发表于 2017-5-4 19:56:41

多谢分享!!!

786857040 发表于 2017-5-6 11:29:56

我仔细研究了一下,发现了一个事实,这个修饰符没什么卵用,如此名一样,修饰符,完就是修饰作用,换种说法就是粉饰或者盖头换面的感觉,我个人觉得这样不好,容易让人产生误会,尤其是识别编码的时候。

786857040 发表于 2017-5-6 11:34:07

delphi369 发表于 2015-1-22 20:34
我写了一个简单的装饰器:
def fun1(fx):
    fx(2,5)


这个不对哦
仔细看

741712547 发表于 2017-5-20 23:27:14

真看不出来,这功能到底有啥用啊。

130975 发表于 2017-6-3 19:24:38

测试题:
0.        issubclass(class, classinfo)
1.        isinstance(object, class)
2.        hasattr(object, name)
3.        定义一个属性来定义其他属性
4.        x = property(getXSize, setXSize, delXSize)

baibaitjy 发表于 2017-7-6 16:35:48

视频看懂了,来这里文章看晕了

yufuyoung 发表于 2017-7-8 00:03:16

看不懂。。。。。。。。。。

雪山一刀 发表于 2017-7-13 23:20:12

涨见识

zhenghuicsdn 发表于 2017-7-26 15:40:35

看不懂啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

keweel 发表于 2017-7-28 15:26:23

{:10_269:}看得不是很懂

skysky 发表于 2017-7-29 02:27:51

完全看不懂,建议把不用装饰器的code也放上来,可以有个比较

yangjian578 发表于 2017-8-5 13:16:52

黎明§末日 发表于 2017-8-7 14:15:49

hh

18813034116 发表于 2017-8-12 22:59:16

类共享的那块代码缩进有问题
然后总结一下装饰器的关键:
首先是方法共享,即把一个方法作为其他方法的附加功能
装饰器的使用与平时的方法调用不同,它需要以@+方法名 同时放在被'装饰'的方法的前面 这种形式
这样一来当被'装饰'的方法运行时,装饰方法也会运行
总的来说,要使用方法装饰器,需要形如:
#coding=utf-8
def fun_c(fun):
    '''
    #装饰器的名字随意,这里是fun_c,它需要有一个参数,用于指待调用这个装饰器的方法
   
    :param fun:
    :return:
    '''
    def call():#这个方法名字也可以随意,当约定俗成为call,这个方法包含了装饰器方法的主体代码,同时参数方法混在里面
      print 'A'
      fun()#参数方法被夹在这里,我们都知道python代码是一行一行执行的,所以会先打印A,然后执行参数方法的代码,最后打印B
      print 'B'
    return call#必须把call方法返回,不然会提示None类型对象无法被调用,我想当被调用时,实际是这样执行的,fun_c(fun)(),所以当不是一个方法作为放回之的时候,就会产生

@fun_c#装饰器要用的话就放在被装饰方法的前面
def fun_a():
    print 'C'

fun_a()#有了装饰器的方法被执行的时候实际上执行的是fun_c(fun_c)()

然后是类共享器:
#coding=utf-8
class A:
    '''
    类共享器的特性在旧式类也可以使用,现在使用的就是旧式类,装饰类需要在构造函数时将产生方法传入,同时被调用的方法必须名为
    __call__
    '''
    def __init__(self,fun):#这里传入了参数方法fun
      self.f=fun
    def __call__(self):#这个函数的名字不能随便起,不信你试试
      print 'A'
      self.f()#然后参数方法就可以在这里被调用并执行
      print 'B'

@A
def fun_a():
    print 'C'

fun_a()

装饰器的作用是,当你需要经常讲函数代码的执行'夹在'一些相同代码的时候,这些相同代码你就可以提取出来做成装饰器,这样你就不用重复写一样的代码,而且很方便~

tongtongtong 发表于 2017-8-17 11:14:02

http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html
看了很多文章,这个最易懂,讲解了装饰器的语法和用处,大家可以参考一下,不过内置装饰器和total_ordering(cls)还不太懂,慢慢来

2012277033 发表于 2017-8-26 01:05:28

看不懂,Hello.print_hello() 调用时为什么还是说Hello没有属性print_hello()
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14
查看完整版本: Python 函数修饰符(装饰器)的使用