太阳花田
发表于 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