这似乎是一个愚蠢的问题,但我无法在任何地方遇到答案.在我的各种包中,我有一组模块,通常每个包含一个类.当我想创建一个类的实例时,我必须引用它两次:
示例:package/obj.py:
class obj(object):
pass
Run Code Online (Sandbox Code Playgroud)
file.py:
import package.obj
my_obj = package.obj.obj()
Run Code Online (Sandbox Code Playgroud)
有没有办法重新组织我的代码,以便我不必输入两次名称?理想情况下,我只想输入package.obj().
Eth*_*man 10
Python不是Java.随意将许多类放入一个文件中,然后根据类别命名文件:
import mypackage.image
this_image = image.png(...)
that_image = image.jpeg(....)
Run Code Online (Sandbox Code Playgroud)
如果您的课程太大,您希望将它们放在单独的文件中以减轻维护负担,这很好,但是您不应该对您的用户造成额外的痛苦(或者如果您使用自己的包,则自己造成痛苦;).在包的__init__文件(或类别文件,例如image)中收集公共类,以呈现相当平坦的命名空间:
mypackage的__init__.py(或image.py):
from _jpeg import jpeg
from _png import png
Run Code Online (Sandbox Code Playgroud)
mypackage的_jpeg.py:
class jpeg(...):
...
Run Code Online (Sandbox Code Playgroud)
mypackage的_png.py:
class png(...):
...
Run Code Online (Sandbox Code Playgroud)
用户代码:
# if gathered in __init__
import mypackage
this_image = mypackage.png(...)
that_image = mypackage.jpeg(...)
Run Code Online (Sandbox Code Playgroud)
要么:
# if gathered in image.py
from mypackage import image
this_image = image.png(...)
that_image = image.jpeg(....)
Run Code Online (Sandbox Code Playgroud)
你可以使用from ... import ...声明:
from package.obj import obj
my_obj = obj()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1186 次 |
| 最近记录: |