python - 在类中嵌套自定义异常类? (Python)

标签 python class scope nested nested-class

<分区>

我想在我自己的类中嵌套一个 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 给出了这个错误:

type object 'Foo' has no attribute 'MyException'

有办法吗?

最佳答案

给定 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

这不正是您要找的吗?

不确定你的代码哪里做错了,我建议你更仔细地重新检查代码。

关于python - 在类中嵌套自定义异常类? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10290942/

相关文章:

python - sklearn 0.14.1 RBM 在 NaN 或 Inf 上崩溃,而没有

python - 在 Python 中生成正弦波声音

C++ sizeof 自定义类返回不正确的值?

Javascript - 事件处理程序中的变量范围

python - 为什么追加到列表会破坏我的 for 循环? (Python)

java - 重用部分代码

mysql - com.mysql.jdbc.Driver 找不到类异常

javascript - 在 Closure Compiler 中公开本地类型

powershell - PowerShell 中的函数范围变量(使用高级方法)?

Python:在 UnivariateSpline 中重新定义 maxit