这样扩展Python模块可以吗?
我有一个基础的Python模块叫做 basemodule.py
,里面有很多函数和类。现在我想创建一些新的模块,比如 new1.py
、new2.py
、new3.py
等等。
每个新模块只会添加或修改基础模块中的1到2个函数。我想找到一种方法来扩展基础模块,这样就不需要重复很多代码了。
参考了 这篇帖子,Rizwan 提出了一个很有趣的做法。
extmodule.py:
from basemodule import *
import basemodule
#code is in extended module
def makeBalls(a,b):
foo = makeBall(a)
bar = makeBall(b)
print foo,bar
#function from extended module overwrites base module
def override():
print "OVERRIDE TWO"
#function from extended module calls base module first
def dontoverride():
basemodule.dontoverride()
print "THIS WAS PRESERVED"
在这个例子中,基础模块被导入了两次,分别使用了 import ..
和 from .. import ..
。
这样扩展Python模块可以吗?会不会导致一些不确定的行为呢?