导入所有类,但不在python中指定每个类
我是python新手,刚刚在一个名为sample.py的文件中创建了几个类导入所有类,但不在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
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' ]