摘要:
初始化超类的传统方式,在子类的实例中调用超类的__init__()方法。 但是传统的方法有两个问题,比如: 问题1: 结果为: 从结果可以看出,即使改变了子类的继承顺序,调用的顺序并没有改变。 问题2: 如果子类继承自两个单独的超类,而那两个超类又继承自同一个公共基类,那么就构成了钻石型继承。 这种 阅读全文
摘要:
使用生成器的好处是显而易见的,可以使代码更加清晰,同时减小内存的消耗,当函数需要返回列表,把函数改写为生成器是相对容易的。 下面这两个函数返回字符串中每个单词的索引: 参考资料:Effective Python 阅读全文
摘要:
如果要达到多个迭代器的效果,__iter__()只需替迭代器定义新的状态对象,而不是返回self 参考资料:Python学习手册 阅读全文
摘要:
对迭代器和生成器的概念一直很混乱,总结一下: 迭代器: 1.所谓的迭代器,就是具有__next__()方法的对象; 2.__iter__()方法返回一个迭代器对象,这个对象必须具有__next__()方法; 3.一个实现了__iter__()方法的对象是可迭代的,一个实现了__next__()方法的 阅读全文
摘要:
第一次见到functools.wraps是在 Flask Web开发 中,一直不明白怎么回事。 装饰器(decorator)是干嘛的?对于受到封装的原函数来说,装饰器能够在那个函数执行前或者执行后分别运行一些代码,使得可以再装饰器里面访问并修改原函数的参数以及返回值,以实现约束定义、调试程序、注册函 阅读全文