0

我是 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

4 回答 4

6

您可以使用此行:

from sample import *

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

我建议您尊重命名空间约定,改用它:

import sample

student1 = sample.Student()

一开始这可能看起来有点矫枉过正,但我​​向你保证,它会为你节省令人沮丧的时间,否则从长远来看,它会花费在调试上。

于 2013-08-06T03:41:41.523 回答
2

可以,但不推荐!根据PEP8

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

要点是,使用通配符导入会使您的代码更难调试,尤其是在几个月后您不再记得编写 import 语句并且您试图弄清楚您的代码做了什么以及所有这些类来自哪里。但如果你绝对必须,语法是:

# Please don't use wildcard imports!
from sample import *
于 2013-08-06T03:41:30.030 回答
0

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

from sample import *
于 2013-08-06T03:37:23.447 回答
0

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

class A:
    pass

// will not be exported
class B:
    pass

class C:
    pass


__all__ = [ 'A', 'C' ]
于 2013-08-06T03:45:12.053 回答