python中的包继承

python中的包继承,python,Python,是否有一种方法可以在python中进行包继承,即包a具有模块mod1、mod2和其他一些子包。现在包B应该从A继承所有模块和子包,这样就可以导入B.mod1 我已经在下面的链接中查看了包继承部分,但无法导入peak.api。我还尝试将父包的所有模块导入子包的_uinit__;文件中,但没有任何帮助。这是可能的。您所要做的就是在uuu init_uuuuu中声明uuuuu All_uuuuuuu变量,该变量应该包含您想要公开的所有模块。有关更多信息,请参阅。这是可能的。您所要做的就是在uuu in

是否有一种方法可以在python中进行包继承,即包a具有模块mod1、mod2和其他一些子包。现在包B应该从A继承所有模块和子包,这样就可以导入B.mod1


我已经在下面的链接中查看了包继承部分,但无法导入peak.api。我还尝试将父包的所有模块导入子包的_uinit__;文件中,但没有任何帮助。

这是可能的。您所要做的就是在uuu init_uuuuu中声明uuuuu All_uuuuuuu变量,该变量应该包含您想要公开的所有模块。有关更多信息,请参阅。

这是可能的。您所要做的就是在uuu init_uuuuu中声明uuuuu All_uuuuuuu变量,该变量应该包含您想要公开的所有模块。有关更多信息,请参阅

# package B __init__.py
from A import mod1, mod2, modN
这就是你所需要的


这就是你所需要的。

是的。例如,请参见numpy的_init__.py Python 2.7的源代码:

import core
from core import *
import compat
import lib
from lib import *
import linalg
import fft
import polynomial
import random
import ctypeslib
import ma
import matrixlib as _mat
from matrixlib import *

# Make these accessible from numpy name-space
#  but not imported in from numpy import *
from __builtin__ import bool, int, long, float, complex, \
     object, unicode, str
from core import round, abs, max, min

__all__.extend(['__version__', 'pkgload', 'PackageLoader',
           'show_config'])
__all__.extend(core.__all__)
__all__.extend(_mat.__all__)
__all__.extend(lib.__all__)
__all__.extend(['linalg', 'fft', 'random', 'ctypeslib', 'ma'])

对。例如,请参见numpy的_init__.py Python 2.7的源代码:

import core
from core import *
import compat
import lib
from lib import *
import linalg
import fft
import polynomial
import random
import ctypeslib
import ma
import matrixlib as _mat
from matrixlib import *

# Make these accessible from numpy name-space
#  but not imported in from numpy import *
from __builtin__ import bool, int, long, float, complex, \
     object, unicode, str
from core import round, abs, max, min

__all__.extend(['__version__', 'pkgload', 'PackageLoader',
           'show_config'])
__all__.extend(core.__all__)
__all__.extend(_mat.__all__)
__all__.extend(lib.__all__)
__all__.extend(['linalg', 'fft', 'random', 'ctypeslib', 'ma'])

这有点凌乱,但从B导入*工作吗?这将添加名为mod1和mod2的mod1、mod2等,而不是B.mod1和B.mod2。star imports只应在python shell中用作方便的快捷方式。在模块中使用它们可以很好地接收不可维护的代码。@brunodesshuilliers在这种情况下,它们有时会被小心地使用,如果你只是想把别人的名称空间复制到你的名称空间中。@Katrielex:我知道有时会用到它们——有些软件包甚至建议这样做——但每次我看到这种情况,总有一天会导致维护问题。显式比隐式好…@Brunodesshuilliers它在numpy中使用。它有点混乱,但从B import*工作吗?这将添加名为mod1和mod2的mod1、mod2等,而不是B.mod1和B.mod2。star imports只应在python shell中用作方便的快捷方式。在模块中使用它们可以很好地接收不可维护的代码。@brunodesshuilliers在这种情况下,它们有时会被小心地使用,如果你只是想把别人的名称空间复制到你的名称空间中。@Katrielex:我知道有时会用到它们——有些软件包甚至建议这样做——但每次我看到这种情况,总有一天会导致维护问题。显式比隐式好…@Brunodesshuilliers它在numpy中使用。