簡體   English   中英

在Python中的用戶定義類中將用戶定義的異常子類化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM