我正在通过出色的“ Python困难之路”进行工作,并将以下代码复制到名为mystuff.py的文件中:
class MyStuff(object):
def __init__(self):
self.tangerine = "And now a thousand years between"
def apple(self):
print "I AM CLASSY APPLES!"
在终端:
import mystuff
thing = MyStuff()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'MyStuff' is not defined
今天,在其他简单的类中,这种情况已经反复发生。有人可以告诉我我在做什么错吗?
最佳答案
您可能需要thing = mystuff.MyStuff()
(假设mystuff
是类MyStuff
所在的文件的名称)。
这里的问题在于python如何处理名称空间。您可以通过导入将某些内容导入当前名称空间,但是如何将名称空间从一个文件合并到另一个文件具有很大的灵活性。例如,
import mystuff
将mystuff(模块/文件级)名称空间中的所有内容都带入当前名称空间,但是要访问它,您需要
mystuff.function_or_class_or_data
。如果不想一直输入mystuff
,则可以更改用于在当前模块(文件)中引用它的名称:import mystuff as ms
现在,您可以通过以下方式访问
MyStuff
:thing = ms.MyStuff()
最后,(几乎)还有
from mystuff import MyStuff
。通过这种形式,您可以将MyStuff
直接带入名称空间,而mystuff
的其他内容都不能进入您的名称空间。最后,(并且不建议使用)
from mystuff import *
。该功能与上一个相同,但是它还捕获了mystuff
文件中的所有其他内容并将其导入。