几个月前,我偶然在某个Python项目中使用了BeautifulSoup,我注意到该库是以某种独特的方式组织的。
要使用BeautifulSoup类,您只需导入顶级软件包,如下所示:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
我知道这是因为BeautifulSoup类(基本上是库提供的唯一类)直接放置在__init__.py
目录中的bs4
中,目的是明确导入库简单。
我想知道在建立自己的库时这种做法是否合适。
显然,通过在__init__.py
中编写类主体将类放在包作用域中将无限期地膨胀文件,但是我既不喜欢通常只有一个类(或任何单位的类)的通常的Python方式。代码)。
简而言之,我不喜欢编写这样的冗余导入语句,当在每个模块中放置一个类时,这似乎是不可避免的:
from mylibrary.splendidparser import splendidparser
from mylibrary.supremetimer import supremetimer
from mylibrary.superbrenderer import superbrenderer
相反,我更喜欢BeautifulSoup方式:
from mylibrary import splendidparser
from mylibrary import supremetimer
from mylibrary import superbrenderer
有什么方法可以打包我的库以启用这种导入样式而不会夸大__init__.py
?
答案 0 :(得分:3)
您不必将实现放在__init__.py
中。您可以将定义放入包目录中的其他模块中,然后将其导入__init__.py
中,然后从那里开始使用它们。
是的,这是适当的。尝试import this
,您将看到社区努力遵循的Python Zen,包括“扁平比嵌套更好”。