所以我听说模块是非常pythonic的,我用模块来构造我的代码很多,避免使用类。
但是现在我正在编写一个与模块Formula
具有很多相同功能的模块Car
。我应该如何处理?
Vehicle
并导入我需要的方法和变量?第三个看起来不错,我看到的唯一缺点是,有一些模块特定的变量(例如top_speed),但是父模块Vehicle中的函数需要访问这些特定变量。
有时可以使用模块来实现Singleton,但是它们并不是要替代类。您只能导入一次模块,而一个类可以具有多个实例。
如果需要继承,请使用类。
一个模块是一个实例,而不是一个类,因此您不能从6
继承它。
如果您的东西有状态,则应该有类,而不是模块。
[如果您有两个需要相同内容的模块,则要么a)其中一个应具有它,而第二个应使用第一个,或b)他们都应从第三个模块获得它。
模块名称通常为小写,因为大写/ CamelCase名称表示类。
class Base():
.....
class derived(Base):
......
但是这是继承的类...
我想从模块继承,并且做到了:
import json
class custom_json(): pass
for i in json.__all__:
setattr(custom_json, i, getattr(json, i))
至少有效。
如果您将覆盖某些属性,请使用它:
import json
class custom_json():
def dump():
pass
for i in json.__all__:
if not hasattr(custom_json, i):
setattr(custom_json, i, getattr(json, i))
让我举个例子:
Base.py
import os
import sys
config = dict()
config['module_name'] = "some_xyz_thing"
config['description'] = "Implements xyz functionality"
Derived.py
from Base import config
config['module_name'] = "som_more_xyz_functionality"
这样您可以在模块级别使用继承