导入所有类,而不在python中指定它们中的每一个

时间:2013-08-06 03:35:12

标签: python class oop

我是python的新手,只是在一个名为sample.py

的文件中创建了一些类
class Student:
      Name = ''
      Age = ''
      Gender = ''

class Employee:
      EmpName = ''
      EmpAge = ''
      EmpClass = ''

现在我创建了另一个名为Hello.py的文件,并在其中导入了上述文件类

from sample import Student,Employee

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

4 个答案:

答案 0 :(得分:6)

您可以使用以下行:

from sample import *

但请注意,这样做是不好的做法,因为您可以轻松地在两个文件中都使用相同名称的功能,这会导致一些丑陋的副作用。

我建议您尊重命名空间约定,而不是使用它:

import sample

student1 = sample.Student()

起初看起来似乎有点过头了,但我保证你会为你节省令人沮丧的时间,否则长期用于调试。

答案 1 :(得分:2)

是的,但不推荐!根据PEP8

  

应该避免使用通配符导入(来自import *),因为它们不清楚命名空间中存在哪些名称,使读者和许多自动化工具都感到困惑。

要点是,使用通配符导入会使您的代码更难调试,特别是在您不再记得编写import语句几个月后,您正试图找出代码的作用以及所有这些类的来源从。但如果你绝对必须,语法是:

# Please don't use wildcard imports!
from sample import *

答案 2 :(得分:0)

您可以使用虽然不推荐,因为它会导致命名空间污染。更好的方法是package.property。根据您的需要,您可以使用:

from sample import *

答案 3 :(得分:0)

您还可以使用模块中的__all__标记,并选择要导出的元素:

class A:
    pass

// will not be exported
class B:
    pass

class C:
    pass


__all__ = [ 'A', 'C' ]