在类中嵌套自定义异常类?(蟒蛇)

Xåp*_* - 3 python scope nested class nested-class

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

class Foo(object):

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

    class MyException(Exception):
        pass
Run Code Online (Sandbox Code Playgroud)

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

from foo_module import Foo

foo = Foo()

try:
    foo.bar()
except Foo.MyException as e:
    print e
Run Code Online (Sandbox Code Playgroud)

Python给出了这个错误:

类型对象'Foo'没有属性'MyException'

有没有办法做到这一点?

gah*_*ooa 6

鉴于以下内容t.py:

class Foo():
  def RaiseBar(self):
    raise Foo.Bar("hi")
  class Bar(Exception):
    pass
Run Code Online (Sandbox Code Playgroud)

并在python终端上运行:

>>> import t
>>> x = t.Foo()
>>> try:
...     x.RaiseBar()
... except t.Foo.Bar as e:
...     print e
... 
hi
Run Code Online (Sandbox Code Playgroud)

这不是你想要的吗?

不确定你的错误是什么,我建议你更仔细地重新检查代码.