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

2024-10-03 09:09:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

提到this post,Rizwan提出了一个非常有趣的方法。在

扩展模块.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模块可以吗?它会导致任何未定义的行为吗?在


Tags: 模块方法函数frompyimportextendedfoo
1条回答
网友
1楼 · 发布于 2024-10-03 09:09:39

虽然可能不那么常见,但这无疑是Python中code reuse的一种有效方法,并且有它的用途,例如,用模拟的模块代替真实的模块来测试或滚动插件系统。在

它是模块级的object composition的一种形式,它可能比通常的object inheritance更灵活,请参见composition over inheritance。不过,您应该注意不要因为以某些模糊的方式使用这种方法而失去代码的清晰度。我想说这通常是在课堂上完成的。在

相关问题 更多 >