覆盖并继承python中其他包的模块

时间:2017-03-15 04:45:00

标签: python

我已经有一个项目有一个模块名称abc.py

我想在模块abc.py中更改并添加一些方法,但我不想修改abc.py,因为我想保持该项目的完整性。

所以我在其他包名myPackage

中创建了其他模块名称abc.py

当我安装project和myPackage时,我的模块abc.py可以覆盖该项目中的原始模块abc.py

感谢

3 个答案:

答案 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 *