在这个问题上,在线搜索不太有用。我正在尝试创建一个包含几个类的模块并对其进行测试。我无法通过第一部分。 我创建了一个包含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解释任何内容的相同教程。我需要使用模块并理解即将获得的错误的含义。
答案 0 :(得分:7)
您的课程应该来自object
,但这不是错误的原因。您可能正在尝试访问未明确导入的名称。您可以导入整个模块,也可以导入模块中的名称。
import test
test.Person()
或者
from test import Person
Person()
或两者兼而有之。没有错误,但也没有多大意义。
您可能想要键入from test import *
来模仿其他语言的行为,但在大多数情况下,这在python中被认为是不好的风格。明确比隐含更好。
要详细了解导入的工作原理,请尝试import test
,然后dir(test)
。或import itertools
和dir(itertools)
,或下载一些不错的代码库,如Werkzeug,阅读代码以了解其结构,然后尝试通过REPL进行导航。