在Python中的用户定义类中对用户定义的异常进行子类化
为什么这样做有效:在Python中的用户定义类中对用户定义的异常进行子类化,python,class,oop,object,subclass,Python,Class,Oop,Object,Subclass,为什么这样做有效: class A: class BError(Exception): pass class CError(AError): pass 但这并不是: class A: class BError(Exception): pass class CError(A.BError): pass 如果“方法1”适用于调用类变量,那么在编译时为什么不适用于“类类”,python构建类,然后将其分
class A:
class BError(Exception):
pass
class CError(AError):
pass
但这并不是:
class A:
class BError(Exception):
pass
class CError(A.BError):
pass
如果“方法1”适用于调用类变量,那么在编译时为什么不适用于“类类”,python构建类,然后将其分配给封闭命名空间中的命名变量。在第一个示例中(假设您真正指的是
class CError(BError)
),已编译BError
,并将其分配给A
类命名空间,以便对下一个类可见。但在第二个示例中,top类尚未分配给全局A
变量,因此无法找到A.BError
该问题可以用以下方式说明:
>>> class A:
... print('A' in globals())
...
False
>>> print('A' in globals())
True
>>>
在第一个示例中没有
AError
。类对象仅在其整个Class语句执行后创建。