为什么pythonshell找不到MyClass
我已将c:/temp/t.py定义如下:为什么pythonshell找不到MyClass,python,Python,我已将c:/temp/t.py定义如下: class MyClass(object): def __init__(self): self._my_secret_thing = 1 def _i_get(self): return self._my_secret_thing def _i_set(self, value): self._my_secret_thing = value def _i_delete(s
class MyClass(object):
def __init__(self):
self._my_secret_thing = 1
def _i_get(self):
return self._my_secret_thing
def _i_set(self, value):
self._my_secret_thing = value
def _i_delete(self):
print 'neh!'
#del self._my_secret_thing
my_thing = property(_i_get, _i_set, _i_delete,'this document for my_thing')
>> import sys
>>> sys.path.append('c:/temp')
>>> import t
>>> dir(t)
['MyClass', '__author__', '__builtins__', '__doc__', '__file__', '__name__']
>>> t = MyClass()
Traceback (most recent call last):
File "<pyshell#11>", line 1, in -toplevel-
t = MyClass()
NameError: name 'MyClass' is not defined
然后我使用Python Shell 2.4.4,如下所示:
class MyClass(object):
def __init__(self):
self._my_secret_thing = 1
def _i_get(self):
return self._my_secret_thing
def _i_set(self, value):
self._my_secret_thing = value
def _i_delete(self):
print 'neh!'
#del self._my_secret_thing
my_thing = property(_i_get, _i_set, _i_delete,'this document for my_thing')
>> import sys
>>> sys.path.append('c:/temp')
>>> import t
>>> dir(t)
['MyClass', '__author__', '__builtins__', '__doc__', '__file__', '__name__']
>>> t = MyClass()
Traceback (most recent call last):
File "<pyshell#11>", line 1, in -toplevel-
t = MyClass()
NameError: name 'MyClass' is not defined
导入系统
>>>sys.path.append('c:/temp')
>>>进口t
>>>署长(t)
['MyClass'、'uuuuu作者'、'uuuuu内置物'、'uuuuu文档'、'uuuuu文件'、'uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
>>>t=MyClass()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在顶层-
t=MyClass()
NameError:未定义名称“MyClass”
问题>为什么python shell找不到“MyClass”?您必须使用
c=t.MyClass()
或从t导入MyClass
。正如S.Lott指出的,您不应该混淆变量名和模块名。
导入名为t
的模块。由于名称空间,必须通过它访问t
中定义的所有内容
import t
inst = t.MyClass()
如果您只想获取类并放弃t
模块中的所有其他内容,您可以这样做
from t import MyClass
inst = MyClass()
t
是模块,MyClass
是该模块的一种属性类型。不能直接访问对象的任何属性。您必须将其包含在您的上下文中,或者必须通过该对象访问它
你可以通过
import t
t.MyClass()
或
你是说“c:\temp”吗?Windows使用前斜杠。
t=MyClass()
您是否意识到这将用变量t
替换模块t
?而且为什么不使用t.MyClass()
?你用什么教程来学习Python?你能提供你正在使用的教程的链接或参考吗?@FakeRainBrigand No.Windows通常使用反斜杠(`\`),但它也可以处理正斜杠('/')。哦,太酷了。谢谢你的提示。