2024-09-29 21:50:55 发布
网友
为什么这样做:
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 CError(BError)
BError
A
A.BError
问题可以表现为:
>>> class A: ... print('A' in globals()) ... False >>> print('A' in globals()) True >>>
编译时,python构建类,然后将其分配给封闭命名空间中的命名变量。在第一个示例中(假设您真正的意思是
class CError(BError)
),BError
已编译并分配给A
类命名空间,因此它对下一个类可见。但是在第二个例子中,top类还没有被分配给全局A
变量,因此A.BError
无法找到问题可以表现为:
相关问题 更多 >
编程相关推荐