我正在嘗試撰寫像這樣帶有附加引數的裝飾器
def dec(arg):
def modifier(cls) -> cls:
# modify cls
return cls;
pass
return modifier
pass
@dec(63)
class X:
a: int = 47;
pass
這當然是錯誤的,因為cls沒有定義。
我已經嘗試過dec(arg: int) -> Callable[[type], type],modifier(cls: type) -> type
但這會弄亂 IntelliSense(vscode)(X.不再提供寫作a)
uj5u.com熱心網友回復:
使用TypeVar定義可用于注釋函式的泛型型別。使用Type來注釋函式接受并回傳 TypeVar 的型別/類
from typing import TypeVar, Type
T = TypeVar('T')
def dec(arg):
def modifier(cls: Type[T]) -> Type[T]:
# modify cls
return cls
return modifier
@dec(63)
class X:
a: int = 47
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/475039.html
標籤:python-3.x 打字
