簡體   English   中英

python 中數據類的最佳泛型類型提示是什么?

[英]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_namename_finder都可以接受PersonAnimal類型的 arguments ,因為這兩個類都為其實例定義了name屬性。 無需將類顯式標記為實現Named協議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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