2

有没有办法在 python 中进行包继承,即说包 A 有模块 mod1、mod2 和其他一些子包。现在包 B 应该从 A 继承所有模块和子包,这样应该可以做到import B.mod1

我已经通过以下链接 http://peak.telecommunity.com/doc/src/peak/config/modules.html中的包继承部分,但无法import peak.api。我也试过在__init__子包文件中导入父包的所有模块,但没有帮助。

4

3 回答 3

4
# package B __init__.py
from A import mod1, mod2, modN

这就是你所需要的。

于 2012-06-28T11:00:31.003 回答
0

有可能的。您所要做的就是声明__all__变量,__init__其中应该包含您想要公开的所有模块。有关详细信息,请参阅文档

于 2012-06-28T10:51:22.010 回答
0

是的。例如,参见numpy's __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'])
于 2012-06-28T12:02:57.080 回答