4

我想在我自己的类中嵌套一个 Exception 子类,如下所示:

class Foo(object):

    def bar(self):
        #does something that raises MyException

    class MyException(Exception):
        pass

这样,当从另一个模块调用 bar() 时,我只需要导入 Foo(而不是 MyException)。但是我下面的内容不起作用:

from foo_module import Foo

foo = Foo()

try:
    foo.bar()
except Foo.MyException as e:
    print e

Python给出了这个错误:

类型对象“Foo”没有属性“MyException”

有没有办法做到这一点?

4

1 回答 1

8

鉴于以下内容t.py

class Foo():
  def RaiseBar(self):
    raise Foo.Bar("hi")
  class Bar(Exception):
    pass

并在 python 终端上运行它:

>>> import t
>>> x = t.Foo()
>>> try:
...     x.RaiseBar()
... except t.Foo.Bar as e:
...     print e
... 
hi

这不正是您要找的吗?

不知道你做错了什么,我建议你更仔细地重新检查代码。

于 2012-04-24T02:26:52.080 回答