我写了以下程序
#! /usr/bin/python
class Rectangle:
def __init__(self):
self.width=0;
self.width=0;
def setSize(self,size):
self.width,self.height = size
def getSize(self):
return self.width,self.height
该程序被命名为 something.py
有 2 种方法来运行这个程序
1) $bash:~/$ python
>>>import something
另一种方法是
2) python -i something.py
在第一种方法的情况下,当我做一个
>>>r=Rectangle()
我收到错误
r=Rectangle()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Rectangle' is not defined
但是当我采用第二种方法
并执行 a时>>>r=Rectangle()
,我没有收到任何错误。
我检查了第一种方法
>>> dir(some)
['Rectangle', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
所以定义了名称 Rectangle 那么为什么我会在这里收到错误消息?
更新
我写了另一个程序
#! /usr/bin/python
def checkIndex(key):
if not isinstance(key, (int, long)): raise TypeError
if key<0: raise IndexError
class ArithmeticSequence:
def __init__(self, start=0, step=1):
self.start = start # Store the start value
self.step = step # Store the step value
self.changed = {} # No items have been modified
def __getitem__(self, key):
checkIndex(key)
try: return self.changed[key]
except KeyError:
return self.start + key*self.step
def __setitem__(self, key, value):
checkIndex(key)
self.changed[key] = value
如果您将此程序键入为 another.py 并执行
>>> import another
和
>>>s=ArithmeticSequence(1,2)
没有得到 ArithmeticSequence 未定义的错误.....