为什么pythonshell找不到MyClass

为什么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

我已将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(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通常使用反斜杠(`\`),但它也可以处理正斜杠('/')。哦,太酷了。谢谢你的提示。