python - 从包中导入只有一个公共成员的子模块时避免重复名称
问题描述
基本设置
假设我想创建一个名为Foo
. 我可以像这样创建一个文件:
foo.py:
class Foo:
def __init__(self):
self.data = "world"
def print(self):
print("Hello, " + self.data)
在我的主脚本中使用这个类:
主文件
import foo
test = foo.Foo()
test.print()
foo.Foo()
每次实例化类时都必须输入已经感觉很荒谬,但是当我想通过将我的类分成一个包来组织我的代码时,情况会变得更糟:
类/__init__.py
# Empty
类/foo.py
# Copy of foo.py, above
主文件
import classes.foo
test = classes.foo.Foo()
test.print()
简单的答案
我知道我可以通过这样使用来清理它from X import Y
:
from classes.foo import Foo
test = Foo()
首选答案
因为该文件仅foo.py
包含一个名称与该文件匹配的成员,所以我希望可以执行以下操作:
from classes import Foo
# Or:
import classes.Foo as Foo
test = Foo()
有没有办法做到这一点?也许在我的一些代码__init__.py
?
解决方案
在classes/__init__.py
中,输入:
from .foo import Foo
现在你可以写了from classes import Foo
。
推荐阅读
- xcode - React-native Xcode 构建存档失败
- android - 谷歌登录不适用于亚马逊应用商店应用
- angular - 如何使用极区顶点图删除或设置小数位
- python - (NumPy)交换最大和最小,交换第二大和第二小,...,交换第 n 个最大和第 n 个最小,对于所有 n,在一维数组中
- xslt - 跳过一个元素及其所有子元素
- sql - 将 PostgreSQL 列类型从金钱更改为双精度
- python - 为什么模型变量初始化方法在tensorflow中被调用了两次?
- java - Java 自动检测死锁并获取线程转储/执行 shell 脚本
- html - 调整页面大小时,文本消失但容器仍然存在
- jsp - 如何使用从BeanClass返回的对象数组并在JSP的DropDown中显示?