Python,我可以导入*而不导入类吗
让我们假设我有一个名为Python,我可以导入*而不导入类吗,python,python-2.7,import,Python,Python 2.7,Import,让我们假设我有一个名为file1.py的文件: from app1 import ClassX class Class1: pass class Class2: pass 如果在另一个名为file2.py的文件中,我想导入Class1和Class2,而不显式导入我通常需要使用的这些类 from file1 import * 我的问题是,当我这样做时,我也导入了ClassX,但我不想导入ClassX,也不想导入Class1和Class2显式 有一种方法可以只导入我在File
file1.py的文件:
from app1 import ClassX
class Class1:
pass
class Class2:
pass
如果在另一个名为file2.py
的文件中,我想导入Class1
和Class2
,而不显式导入我通常需要使用的这些类
from file1 import *
我的问题是,当我这样做时,我也导入了ClassX
,但我不想导入ClassX
,也不想导入Class1和Class2显式
有一种方法可以只导入我在File1
?中真正开发的类,从而更好地说明Jonathon Reinhart对这个问题的评论:
# app2.py
from app1 import ClassX
__all__ = ['Class1', 'Class2']
class Class1:
pass
class Class2:
pass
这就是为什么。它控制当您从foo import*
导入时自动包含的内容。Adam,这很酷。但我只能看到一个问题,如果我在file1.py上创建一个Class3,我需要将其添加到所有var中。还有其他方法吗?每次我创建一个新类时,是否都需要添加所有内容?@Rubico(我知道)没有办法创建要导入的项目的所谓“黑名单”。无论如何,您应该尽量避免modulename导入中的*
构造。
# test.py
from app2 import *
c = Class1()
d = Class2()
try:
e = ClassX()
except NameError:
print "Working as intended!"