5

在线搜索在这件事上没有那么有用。我正在尝试创建一个包含几个类的模块并对其进行测试。我一直无法通过第一部分。我创建了一个具有 3 个属性及其 getter 方法的简单类,因此我从“主要”方法中看到了它们的属性(我猜)

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

类定义是

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 中键入整个类并实例化对象时,一切正常,但在我的情况下这是无用的,因为模块会随着时间的推移而增长。

请仅在您愿意提供帮助的情况下回答,不要将我发送到相同的教程,这些教程不会在没有外壳的情况下解释任何内容。我需要使用模块并理解我得到的错误的含义。

4

1 回答 1

7

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

import test
test.Person()

或者

from test import Person
Person()

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

您可能很想通过键入from test import *来模仿其他语言的行为,但在大多数情况下,这在 python 中被认为是不好的风格。显式优于隐式。

要了解有关导入如何工作的更多信息,请尝试import test然后dir(test). 或者import itertoolsdir(itertools)或者下载一些不错的代码库,比如Werkzeug,阅读代码以了解它的结构,然后尝试通过 REPL 导航它。

于 2012-09-26T14:52:16.300 回答