我是靠谱客的博主 乐观鸡,最近开发中收集的这篇文章主要介绍Fluent Python 笔记四,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. __getattr__
  2. 利用__new__创建对象
  3. @property和@name.setter
  4. 相当于name = property(fget, fset, fdel, doc)
  5. 新添的property类特性能够遮盖实例属性
  6. 实例属性不会遮盖类特性
  7. 利用property(fget, fset, fdel, doc)创建类特性工厂函数(改用描述符类更简洁易于扩展和继承)

    def quantity(name):
    def fget(instance):
    return instance.__dict__[name]
    def fset(instance, value):
    if value > 0:
    instance.__dict__[name] = value
    # 跳过特性
    else:
    raise ValueError('%s must > 0' % name)
    return property(fget, fset)
  8. Python looks for special methods such as __getattr__ only in an object’s class, and not in the instances themselves.?????????

  9. __getattr____getattribute____delattr____setattr__
  10. __new__看作创建类的工厂方法(生成不同类型的对象或者返回事先生成好的对象)。
  11. 描述符__get____set____del__
  12. __set__(self, instance, value) self指描述符类实例,instance指托管类实例
  13. __get__(self, instance, owner)在owner为托管类类,当owner为空时(即类.属性时),返回描述符类本身self。
  14. 模板方法设计模式:抽象类:模板方法和抽象方法,其中模板方法中调用抽象方法获取结果,并实现其他相同业务。;实现类:实现抽象方法。23种设计模式(6):模版方法模式
  15. 覆盖型描述符(定义__set__)和非覆盖型描述符(无__set__
  16. 覆盖型描述符(实现__get__`__set__):实例和类的获取值和属性赋值操作都会触发这两个方法,不会被实例属性覆盖。
  17. 未实现__get__的覆盖型描述符:赋值触发__set__,但获取属性或被实例属性遮盖。
  18. 非覆盖性描述符(未实现__set__):
  19. 任何描述符都可以通过类属性来覆盖。
  20. 方法是非覆盖性描述符。
  21. 函数function变成绑定方法bound method,bound method有__self__属性,是调用这个方法的实例的引用;__func__属性是在托管类上的原始函数的引用;还有__call__方法,来调用__func__
  22. 类装饰器可能对子类无效。
  23. type是其自身的实例,object是type的实例,type是object的子类。
  24. 类都是object的子类,类都是type的实例

最后

以上就是乐观鸡为你收集整理的Fluent Python 笔记四的全部内容,希望文章能够帮你解决Fluent Python 笔记四所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部