像这样扩展Python模块可以吗?

像这样扩展Python模块可以吗?,python,python-2.7,inheritance,composition,python-module,Python,Python 2.7,Inheritance,Composition,Python Module,我有一个带有许多函数和类的基本Python模块basemodule.py。现在我想创建许多新模块,new1.py,new2.py,new3.py,等等 每个模块仅在基本模块中添加或更改1-2个功能。我正在寻找一种扩展基本模块的方法,这样我就不需要重复很多代码 提到这个问题,Rizwan提出了一个非常有趣的方法 extmodule.py: 在本例中,使用import..和from..导入了两次基本模块。。导入.. 像这样扩展Python模块可以吗?它会导致任何未定义的行为吗?虽然可能不太常见,但这

我有一个带有许多函数和类的基本Python模块
basemodule.py
。现在我想创建许多新模块,
new1.py
new2.py
new3.py
,等等

每个模块仅在基本模块中添加或更改1-2个功能。我正在寻找一种扩展基本模块的方法,这样我就不需要重复很多代码

提到这个问题,Rizwan提出了一个非常有趣的方法

extmodule.py:

在本例中,使用
import..
from..导入了两次基本模块。。导入..


像这样扩展Python模块可以吗?它会导致任何未定义的行为吗?

虽然可能不太常见,但这在Python中肯定是一种有效的方法,并且有它的用途,例如用模拟模块替换真实模块以测试或滚动插件系统


它是模块级的一种形式,可能比通常更灵活,请参见。尽管您应该注意不要以一些模糊的方式使用这种方法,从而使代码变得清晰。我想说,这通常需要在课堂上完成。

这就是OOP的目的。使用它。这当然会起作用,但它可能会使任何阅读您的代码的人感到困惑。
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"