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!"