主要观点:通过阅读常用 Python 包学习构建更易维护和可用的 Python 库,介绍了一些不常见的 Python 使用方法。
关键信息:
- 使用
super()
在基类中:super()
可在单继承中方便继承基类,在多继承中几乎必不可少,在基类中调用super()
可实现合作式多继承,避免父类__init__
调用被跳过。 - 何时使用 Mixin:Mixin 是提供可复用方法实现的类,适用于为类提供大量可选功能或在多个不同类中使用特定功能,可防止基类因过多特性而膨胀,且可被其他子类复用。
- 使用相对导入(几乎总是):相对导入确保先在当前包中搜索并导入,避免与脚本目录中的同名包冲突,
.
可确保导入当前包中的模块。 - 何时添加到
__init__.py
:__init__.py
标记目录为 Python 包目录,常见做法是留空,但很多库的__init__.py
文件非空,可用于代码重构、提供简化 API、初始化日志、进行兼容性检查等。 - 何时使用实例、类和静态方法:实例方法需类实例,可通过
self
访问实例;类方法不需实例,可通过cls
访问类;静态方法不访问self
或cls
,像普通函数但属于类命名空间,可根据需求使用。 conftest.py
的使用:常用于为整个目录提供夹具,还可用于加载外部插件和定义钩子,在 sklearn 中conftest.py
可确保 pytest 识别模块而无需指定PYTHONPATH
。- 解释库设计原则的论文:如 scikit-learn 的设计原则包括一致性和组合性,fastai 使用分层方法,PyTorch 的设计原则包括提供实用性能和“更糟即更好”等。
重要细节:文中通过多个库的代码示例详细说明了各方法的使用,如 requests、flask、fastapi、scikit-learn、pytorch、fastai、pydantic 和 django 等库的相关用法,并提供了相关阅读链接和引用信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。