[英]Subclassing a user-defined exception in a user-defined class in 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
類名稱空間,因此對於下一個類可見。 但是在第二個示例中,尚未將頂級類分配給全局A
變量,因此A.BError
。
該問題可以證明為:
>>> class A:
... print('A' in globals())
...
False
>>> print('A' in globals())
True
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.