首頁 >後端開發 >Python教學 >如何在 Python 中使用封閉類別類型來型別提示方法?

如何在 Python 中使用封閉類別類型來型別提示方法?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-27 19:04:10805瀏覽

How to Type Hint a Method with the Enclosing Class Type in Python?

如何使用封閉類別的型別對方法進行型別提示?

Python 中使用型別提示來指示變數的預期型別或函數的回傳值。它們提供了一種記錄程式碼預期行為的方法,並可以幫助及早捕獲錯誤。

問題陳述:

您在Python 3 中有以下程式碼:

class Position:

    def __init__(self, x: int, y: int):
        self.x = x
        self.y = y

    def __add__(self, other: Position) -> Position:
        return Position(self.x + other.x, self.y + other.y)

但是,您的編輯器(PyCharm) 會標記一個錯誤,表示在類型提示中對Position 的參考__add__ 無法解析。這就提出了一個問題:如何指定回傳類型應該是 Position 類型?

解決方案:

在Python 中,類型提示主要有三種方法具有其封閉類型類型的方法,取決於您使用的Python 版本:

Python 3.11 :

from typing import Self

class Position:
    def __add__(self, other: Self) -> Self:
        ...

帶有 from __future__ 導入註解的 Python 3.7:

from __future__ import annotations

class Position:
    def __add__(self, other: Position) -> Position:
        ...

Python 3.和早期:

class Position:
    def __add__(self, other: 'Position') -> 'Position':
        ...

說明:

  • Python 3.11 : 引入了一個新的類型註釋專門設計的用於引用封閉的類型類別。
  • 帶有 from __future__ import 註解的 Python 3.7: 啟用類型註解的延遲評估,將它們儲存為字串,直到模組完全載入。
  • Python 3.6 及更早版本: 類型中使用類別名稱的字串表示形式hint.

預編譯要求:

預編譯要求:

在3.7 之前的Python在版本中,類型提示中使用字串需要定義所引用的類別在類型註解中使用之前。否則,您將遇到 NameError。

注意事項:
  • 在 Python 3.11 中首選使用 Self,因為它提供了一種更明確且可讀的方式來引用封閉類型。
  • 在 Python 3.7 及更高版本中,from __future__ import註解可以顯著提高導入輸入模組的程式碼的效能。
在 3.6 之前的 Python 版本中,基於字串的方法是型別提示封閉類別的唯一選擇。

請記住,類型提示是可選的,但它們可以顯著增強程式碼的可讀性、錯誤檢查和可維護性。

以上是如何在 Python 中使用封閉類別類型來型別提示方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn