所以我听说模块非常pythonic,我用模块构建我的代码很多,避免了类。
但是现在我正在编写一个模块Formula
,它与模块Car
具有许多相同的功能。我该怎么处理?
Vehicle
并导入我需要的方法和变量?第三个看起来不错,我看到的唯一缺点是有一些特定于模块的变量(例如top_speed),但父模块Vehicle中的函数需要访问这些特定变量。
答案 0 :(得分:1)
模块有时可用于实现单例,但它们并不意味着替代类。您只能导入模块一次,而类可以有多个实例。
如果您需要继承,请使用类。
答案 1 :(得分:1)
模块是一个实例,而不是一个类,所以你不能继承它,只能继承6
。
如果你的东西有状态,你应该有课程,而不是模块。
如果你有两个模块需要相同的东西,那么要么a)其中一个应该拥有它而第二个应该使用第一个,或者b)它们都应该从第三个模块获得它。
模块名称通常是小写的,因为Uppercase / CamelCase名称表示类。
答案 2 :(得分:0)
class Base():
.....
class derived(Base):
......
但这是继承课......
答案 3 :(得分:0)
我想从模块继承,并且做到了:
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))
答案 4 :(得分:-2)
让我举个例子:
<强> 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"
这样您就可以在模块级别使用继承