class MyException(Exception):
message = _("An unknown exception occurred.")
code =500
headers = {}
safe =False
def__init__(self, message=None):
if not message:
message =self.message
super(MyException,self).__init__(message)
exc = MyException('help')
print exc.message
print super(MyException, exc).message
An unknown exceptionoccurred.
help
In [11]: dir(Exception)
Out[11]:
['__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattribute__',
'__getitem__',
'__getslice__',
'__hash__',
'__init__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__setstate__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__unicode__',
'args',
'message']
在MyException中,又重新定義了一個message變量。所以在MyException和Exception都分別存放了一個message變量。根據之前的python對象之屬性訪問流程介紹,MyException("help")只是初始化了Exception中的message,MyException自己的message並未改變。通過exc.message訪問的是MyException的message,通過super(MyException, self).message訪問的是Exception的message。