在Python的用户定义类中对用户定义的异常进行子类化

2024-09-29 21:50:55 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么这样做:

class A:
    class BError(Exception):
        pass
    class CError(AError):
        pass

但事实并非如此:

class A:
    class BError(Exception):
        pass
    class CError(A.BError):
        pass

如果“方法1”适用于调用类变量,为什么它不适用于“类”


Tags: 方法exceptionpassclass事实aerrorcerrorberror
1条回答
网友
1楼 · 发布于 2024-09-29 21:50:55

编译时,python构建类,然后将其分配给封闭命名空间中的命名变量。在第一个示例中(假设您真正的意思是class CError(BError)),BError已编译并分配给A类命名空间,因此它对下一个类可见。但是在第二个例子中,top类还没有被分配给全局A变量,因此A.BError无法找到

问题可以表现为:

>>> class A:
...     print('A' in globals())
... 
False
>>> print('A' in globals())
True
>>> 

相关问题 更多 >

    热门问题