首页 > 解决方案 > 在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 的基类有什么特别之处。谁能给我解释一下?

谢谢。

标签: pythonpython-typing

解决方案


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

第二个版本是具有泛型__init__方法的非泛型类。T将根据value您传递的内容推断出不同的内容,但是无法声明类的特化,例如LoggedVar[int],如果使用其他方法T,则这些方法将是单独的泛型方法,不需要T与推断出的任何内容相匹配__init__


推荐阅读