导入所有类,但不在python中指定每个类

导入所有类,但不在python中指定每个类,python,class,oop,Python,Class,Oop,我是python新手,刚刚在一个名为sample.py的文件中创建了几个类 class Student: Name = '' Age = '' Gender = '' class Employee: EmpName = '' EmpAge = '' EmpClass = '' 现在我创建了另一个名为Hello.py的文件,并在其中导入了上述文件类 from sample import Student,Employee

我是python新手,刚刚在一个名为sample.py的文件中创建了几个类

class Student:
      Name = ''
      Age = ''
      Gender = ''

class Employee:
      EmpName = ''
      EmpAge = ''
      EmpClass = ''
现在我创建了另一个名为Hello.py的文件,并在其中导入了上述文件类

from sample import Student,Employee

我的问题是,假设我在sample.py文件中有许多类,是否有任何方法可以导入sample.py中的所有类而不指定它们中的每一个。

您可以使用它,但不建议使用,因为它会导致命名空间污染。更好的方法是
package.property
。对于您想要的,您可以使用:

from sample import *
是的,但不推荐!根据:

应该避免通配符导入(从导入*),因为它们使名称空间中存在的名称不清楚,从而混淆了读卡器和许多自动化工具

要点是,使用通配符导入会使代码更难调试,特别是在几个月后,当您不再记得编写import语句时,您正试图弄清楚代码的功能以及所有这些类的来源。但如果您必须这样做,语法是:

# Please don't use wildcard imports!
from sample import *
您可以使用以下行:

from sample import *
但请注意,这样做是不好的做法,因为您很容易在两个文件中都有一个同名函数,这将导致一些丑陋的副作用

我建议您尊重命名空间约定,改用以下方式:

import sample

student1 = sample.Student()

乍一看,这似乎有些过分,但我向您保证,从长远来看,这将为您节省令人沮丧的调试时间。

您也可以在模块中使用
\uuuuuuu all\uuuu
标记并选择要导出的元素:

class A:
    pass

// will not be exported
class B:
    pass

class C:
    pass


__all__ = [ 'A', 'C' ]