类在python中继承泛型的目的是什么?

2024-06-30 13:08:56 发布

您现在位置:Python中文网/ 问答频道 /正文

这两种代码有什么区别

from typing import TypeVar, Generic
from logging import Logger

T = TypeVar('T')

class LoggedVar(Generic[T]):
    def __init__(self, value: T, name: str, logger: Logger) -> None:
        self.name = name
        self.logger = logger
        self.value = value

以及

from typing import TypeVar
from logging import Logger

T = TypeVar('T')

class LoggedVar:
    def __init__(self, value: T, name: str, logger: Logger) -> None:
        self.name = name
        self.logger = logger
        self.value = value

我不明白用Generic作为LoggedVar的基类有什么特别之处。谁能给我解释一下吗

谢谢


Tags: namefromimportselftypinginitvaluelogging
1条回答
网友
1楼 · 发布于 2024-06-30 13:08:56

第一个版本是泛型类LoggedVar[int]是类的专门化,它在其构造函数中采用int作为value参数。如果类中有T的任何其他用法,T的值必须匹配

第二个版本是带有泛型__init__方法的非泛型类T将根据您传递的value而被推导成不同的东西,但是没有办法像LoggedVar[int]那样声明类的专门化,如果其他方法使用了T,那么这些方法将是独立的泛型方法,没有要求T匹配为__init__推导的任何方法

相关问题 更多 >