我已经有一个项目有一个模块名称abc.py
我想在模块abc.py中更改并添加一些方法,但我不想修改abc.py,因为我想保持该项目的完整性。
所以我在其他包名myPackage
中创建了其他模块名称abc.py当我安装project和myPackage时,我的模块abc.py可以覆盖该项目中的原始模块abc.py
感谢
答案 0 :(得分:1)
我不明白你为什么要那样做,但是可以用Python做到这一点。让我告诉你使用标准模块math
import math as m
m.cos = lambda x: "I like pancakes"
print m.cos(12) # prints "I like pancakes"
为什么不能简单地在所提及的模块之外声明你的新方法,并将其用作原样?
答案 1 :(得分:1)
这听起来不是一个理智的方法。你可以做的是用{/ p>之类的东西来定义my_abc.py
from abc import *
def overridden_method (args):
"Your overridden method here."
pass
现在my_abc.foo
间接指向基础abc.foo
,而my_abc.overridden_method
特指并直接指向包装程序包中的重写方法。
abc
是一个类,那么非常受欢迎的方法是定义一个继承它的新类。
from abc import Abc
class MyAbc (Abc): # MyAbc inherits from the Abc class
def overridden_method (self, arguments):
"Your overridden method replaces anything with the same name in Abc."
pass
现在,MyAbc()
对象实例与您继承的类中的Abc()
对象实例基本相同,但其overridden_method
方法将是您在{{1}中定义的方法}。
答案 2 :(得分:0)
您必须更改要在其中使用新abc.py的每个模块中的导入。
来自myPackage.abc import *