代码之家  ›  专栏  ›  技术社区  ›  Ray Salemi

未将嵌套类视为异常

  •  1
  • Ray Salemi  · 技术社区  · 8 年前

    以下代码表示找不到MyError:

       class Test:
           class MyError(ValueError):
               pass
    
           def bad(self):
               raise MyError
    
           def myfunc(self):
               try:
                   self.bad()
               except MyError as me:
                   print(me)
    
    
       tt = Test()
       tt.myfunc()
    

    当我运行它时,我得到以下信息:

     Traceback (most recent call last):
       File "testcase.py", line 16, in <module>
         tt.myfunc()
       File "testcase.py", line 11, in myfunc
         except MyError as me:
     NameError: name 'MyError' is not defined
    

    关于引用嵌套类,我缺少什么?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Ray Salemi    8 年前

    我需要将类的路径完全限定为 Test.MyError

     class Test:
         class MyError(ValueError):
             pass
    
         def bad(self):
             raise Test.MyError
    
         def myfunc(self):
             try:
                 self.bad()
             except Test.MyError as me:
                 print(me)
    
    
     tt = Test()
     tt.myfunc()