如何在Python中扩展(继承)模块?

dua*_*ty_ 7 python inheritance code-reuse module

所以我听说模块非常Pythonic,我经常使用模块来构建我的代码并避免使用类。

但现在我正在编写一个模块Formula,它具有许多与 module 相同的功能Car。我该怎么处理?

  • 两个模块中的代码重复?
  • 转换为类?
  • 重构代码以添加第三个父模块Vehicle并导入我需要的方法和变量?

第三个看起来不错,我看到的唯一缺点是有一些特定于模块的变量(例如 top_speed),但父模块 Vehicle 中的函数需要访问这些特定变量。

unu*_*tbu 1

模块有时可用于实现单例,但它们并不意味着要替代类。您只能导入模块一次,而一个类可以有多个实例。

如果需要继承,请使用类。

  • 使用模块作为单例肯定是某些人所做的,但这是一种反模式。只需在某处存储和实例化就更可测试、更灵活、更可维护 - http://glyph.twistedmatrix.com/2007/07/functions-functions-and-python.html (2认同)