我有一個名為triangulo的類和一個名為coord的類。所以,以一種創建三角形的新實體的方式,我傳遞了三個頂點
t= triangle( V1, V2, V3)
因此,對于檔案,我想以這種方式撰寫類三角形
class triangulo( object ):
def __init__(self, a:coord, b:coord, c:coord)->None:
"""Constructor
"""
self.A= a
self.B= b
self.C= c
class coord( object ):
def __init__( self, x, y ):
self.x= x
self.y= y
但是當我嘗試匯入這個庫時,我得到了這個錯誤
NameError:名稱“坐標”未定義
所以問題是:我怎樣才能讓python接受頂點作為一種資料?
uj5u.com熱心網友回復:
您需要在使用之前宣告該類!所以把coord類放在上面triangulo會解決問題
uj5u.com熱心網友回復:
您可以將類的名稱用引號括起來
def __init__(self, a: 'coord', b: 'coord', c: 'coord') -> None:
...
或者您可以使用__future__匯入自動執行此操作
from __future__ import annotations
...
def __init__(self, a: coord, b: coord, c: coord) -> None:
...
from __future__ import annotations有效地將所有型別簽名包含在引號中以防止出現此問題。只要您不在運行時(使用類似的東西MyClass.__annotations__)反射性地查看型別注釋,您甚至不會注意到,并且您的型別檢查器會更好地作業。
uj5u.com熱心網友回復:
請注意,型別提示可以是類或型別(在您的情況下,頂點是類):
from whatever import vertex
class triangle():
def __init__(self, v1:vertex, v2:vertex, v3:vertex)->None:
...
更多詳細資訊,請訪問https://www.python.org/dev/peps/pep-0483/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/432209.html
