这是我的代码:
class longInputException(Exception):
def __init__(self, length, max):
Exception.__init__(self)
self.length = len(length)
self.max = max
try:
max = 3
s = raw_input('Enter something-->')
if len(s) > max:
raise longInputException(s, max)
except longInputException, x:
print 'longInputException: the input was of length %d, \
was expecting less than or equal to %d' % (x.length, x.max)
else:
print 'No exception was raised.'
我不明白为什么在x
的{{1}}声明中使用了longInputException
。为什么不在替换元组中使用except
?
答案 0 :(得分:3)
self
是 __init__()
方法中当前对象的名称(因为您提供了self
作为__init__()
'中的第一个参数定义),它不能在它之外访问。
可选择你可以这样做(虽然这是不你应该做的事情,因为这可能会让人们误解哪个变量是哪个):
except longInputException, self:
print 'longInputException: the input was of length %d, \
was expecting less than or equal to %d' % (self.length, self.max)
else:
print 'No exception was raised.'
它能回答你的问题吗?
通过阅读Python中的闭包和命名空间,您可以了解更多相关信息。
答案 1 :(得分:0)
如果你的try ... except语句是在另一个类的实例化中,并且你在except语句中使用了“self”,那么“self”将引用实例化的类,而不是实例化的异常类。
答案 2 :(得分:0)
我认为这是因为你不知道你指的是哪个例外。您通常只在对象内使用“自我”。