TodoPython面试题分析记录(修饰器等)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TodoPython面试题分析记录(修饰器等)相关的知识,希望对你有一定的参考价值。
首先,看这一段代码:
class A(object): x = 1 gen = (lambda t: (t for _ in xrange(10)))(x) if __name__ == ‘__main__‘: print(list(A.gen))
打印出:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
装饰器学习:
看这篇文章应该就可以了:《Python装饰器学习(九步入门)》
里面提到
http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html
内置的装饰器有三个,分别是staticmethod、classmethod和property,作用分别是把类中定义的实例方法变成静态方法、类方法和类属性。由于模块里可以定义函数,所以静态方法和类方法的用处并不是太多,除非你想要完全的面向对象编程。而属性也不是不可或缺的,Java没有属性也一样活得很滋润。从我个人的Python经验来看,我没有使用过property,使用staticmethod和classmethod的频率也非常低。
重点关注第11行的@timeit,在定义上加上这一行与另外写foo = timeit(foo)完全等价,千万不要以为@有另外的魔力。除了字符输入少了一些,还有一个额外的好处:这样看上去更有装饰器的感觉。
class Rabbit(object): def __init__(self, name): self._name = name @staticmethod def newRabbit(name): return Rabbit(name) @classmethod def newRabbit2(cls): return Rabbit(‘‘) @property def name(self): return self._name
这里定义的属性是一个只读属性,如果需要可写,则需要再定义一个setter: @name.setter def name(self, name): self._name = name
http://blog.csdn.net/mdl13412/article/details/22608283
里面给出了一些实例参考
本文主要讲解原理性的东西,具体的实例可以参考下面的链接:
Python装饰器实例:调用参数合法性验证
对于类方法的装饰器,有人给出如下方案:
def decorator(args): def _deco(func): def _func(self): print args print ‘gooooo‘ func(self) print ‘fooo‘ return _func return _deco
关于直接对类编写装饰器,如下:
http://www.2cto.com/kf/201603/494405.html
中文编码
可以看这里:http://www.cnblogs.com/charlesblc/p/6159109.html
其他的后续再看吧...
以上是关于TodoPython面试题分析记录(修饰器等)的主要内容,如果未能解决你的问题,请参考以下文章