我应该如何导入类模块以进行测试

时间:2012-09-26 14:50:22

标签: python class module

在这个问题上,在线搜索不太有用。我正在尝试创建一个包含几个类的模块并对其进行测试。我无法通过第一部分。 我创建了一个包含3个属性及其getter方法的简单类,所以我从“main”方法看到它们的属性(我猜)

我需要创建这个类的一些对象,以便我可以使用后者。

类定义是

class Person:
    def __init__(self, n, a, s):
        self.name = n
        self.age = a
        self.sex = s
    def getAge(self):
        return self.age
    def getSex(self):
        return self.sex

我将这个文件保存在test.py文件中,我从shell中导入它然后在实例化和对象时我不断收到同样的错误

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    x = Person('myname', 10, 'm')
NameError: name 'Person' is not defined

test.py位于C:/Python3.x目录中,所以我真的没有收到此错误。

当我在shell中输入整个类并实例化对象时,一切正常,但在我的情况下这是无用的,因为模块会随着时间的推移而增长。

请仅在您愿意提供帮助时回答,请不要将我发送给没有shell解释任何内容的相同教程。我需要使用模块并理解即将获得的错误的含义。

1 个答案:

答案 0 :(得分:7)

您的课程应该来自object,但这不是错误的原因。您可能正在尝试访问未明确导入的名称。您可以导入整个模块,也可以导入模块中的名称。

import test
test.Person()

或者

from test import Person
Person()

或两者兼而有之。没有错误,但也没有多大意义。

您可能想要键入from test import *来模仿其他语言的行为,但在大多数情况下,这在python中被认为是不好的风格。明确比隐含更好。

要详细了解导入的工作原理,请尝试import test,然后dir(test)。或import itertoolsdir(itertools),或下载一些不错的代码库,如Werkzeug,阅读代码以了解其结构,然后尝试通过REPL进行导航。