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

概述

第四部分 面向对象

  1. 对象和变量
  2. ==和is, ==能够被重载(__eq__()),is不能。
  3. 浅复制:工厂函数, 切片, copy.copy。
    深复制:copy.deepcopy
  4. 引用传参(共享传参)。
  5. 注意可变参数作为默认值时,存在method.__defaultes__中。
  6. 对象引用计数归零时回收内存。通过del删除引用,或者变量重新赋值使原来对象失去引用。
  7. __str_____repr___, str找不到会去找repr。
  8. https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods 讲解了普通method、staticmethod、classmethod、abstractmethod
  9. staticmethod:没有用到self自身实例的方法,类似于普通顶级函数,但在类中,能够被子类使用或重写。
  10. classmethod:用于工厂方法,返回实例;可调用类静态方法且能够在子类中运行良好(在调用的方法中,类名用self替代,self.classmethod)。
  11. __slots__ 子类需要重新定义。
  12. slice.indices()
  13. __getattr__只会在找不到属性时执行,实例属性->类属型->父类->`__getattr__方法。
  14. `__setattr__设置属性。
  15. 散列值hash()。通过映射归约 map 获取各元素的散列值列表 -> reduce 聚合(xor)所有散列值。
  16. zip、zip_longest
  17. 协议? 容器协议 __contains__ 迭代协议__iter__
  18. 运行时实现协议(如动态的给实例对象赋值__getitem__方法)
  19. 抽象基类
  20. @abstractmethod放在最底层,与def间不能有任何其他装饰器。

    class A(abc.ABC):
     @classmethod
     @abc.abstractmethod
     def abstract_classmethod(cls):
       pass
  21. 虚拟子类在任何时候(导入和实例化)都不会检查是否符合抽象基类的接口,为了在运行时避免错误,需要实现所需的全部方法。
  22. 注册虚拟子类@cls.register或者cls.register(subclass)
  23. 继承内置类型会有很多麻烦(部分方法会跳过覆盖的方法,如dict的__init__get()update()),可以选择继承UserList,UserDict等
  24. 继承时,遵循方法解析顺序通过类属性__mro__或mro()查看。
  25. 利用cls.method(self)可以跳过mro,并指定想要的父类方法。
  26. 不能重载内置类型运算符,不能新建运算符,某些运算符不能重载(is、not、and、or)。
  27. +一元取正__pos__、-一元取负__neg__、~按位取反__invert__
  28. +加法运算符__add__、*乘法运算符__mul__
  29. 比较运算符
  30. +=运算符__iadd__、*=运算符__imul__。若不存在,a += b 实际就是 a = a + b
  31. 不可变类型一定不能实现就地特殊方法

最后

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

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部