0

我刚刚用安装脚本制作了我的第一个 Python 包,我想知道这种行为是否正常。它由一个包含我想访问的类的模块组成。项目结构是这样的:

.
|
+ -- __init__.py
+ -- setup.py
my_package
    |
    + __init__.py
    + my_class.py

__init__.py总是空的。

当我安装它时,这是我期望的行为:

>>> import my_package
>>> my_class.MyClass()
A new object is born!

相反,我只能这样做:

>>> from my_package import my_class
>>> my_class.MyClass()
A new object is born!

如果相关的话,我的包和我的类文件的名称相同。这是一个糟糕的包装设计案例吗?我发现我可以通过输入来解决这个问题from my_class import *__init__.py但我讨厌使用这样的语句,即使它们留在导入命名空间中。

4

1 回答 1

3

import my_package将导入 中定义的内容my_package/__init__.py,因此这种行为是完全正常的。您无法使用my_class,因为您没有对该模块的任何引用。

我不知道你的包设计是是坏,但是如果你想MyClass在导入时使用my_package,只需将这个类移到脚本中即可my_package/__init__.py

于 2013-04-22T14:48:16.747 回答