[英]What is the best generic type hint for a dataclass in python?
我已經開始使用數據類,我有一些具體的可以說,例如:
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
job:str
@dataclass
class Animal:
name: str
age: int
然后我有一個抽象的 class 就像一個接口
import abc
from typing import List, Dict
class NameFinder:
@abc.abstractmethod
def get_name(self, name: str,being ) :
pass
class PersonName(NameFinder):
def get_name(self, name:str, person:Person):
return person.name
class AnimalName(NameFinder):
def get_name(self, name:str, animal:Animal):
return animal.name
我可以在抽象 class 中使用什么好的泛型類型提示作為 Person 和 Animal 類的占位符?
您可以定義一個協議 class,它只是斷言name
屬性的存在。
from typing import Protocol
class Named(Protocol):
name: str
class NameFinder:
@staticmethod
def get_name(obj: Named) -> str:
return obj.name
# or ...
def name_finder(obj: Named) -> str:
return obj.name
get_name
和name_finder
都可以接受Person
或Animal
類型的 arguments ,因為這兩個類都為其實例定義了name
屬性。 無需將類顯式標記為實現Named
協議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.