class 继承 python 中的泛型的目的是什么?
What is the purpose of a class inheriting a Generic in 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 的基础 class 有什么特别之处。谁能给我解释一下?
谢谢。
第一个版本是通用的 class。 LoggedVar[int]
是 class 的特化,它在其构造函数中采用 int
作为 value
参数。如果在 class 中还有 T
的任何其他用途,则 T
的值必须匹配。
第二个版本是一个非泛型 class 和一个泛型 __init__
方法。 T
将根据您传递的 value
推导出不同的东西,但是无法像 LoggedVar[int]
那样声明 class 的特化,如果使用其他方法 T
,这些将是单独的通用方法,不要求 T
匹配为 __init__
.
推导的任何内容
这两个代码有什么区别?
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 的基础 class 有什么特别之处。谁能给我解释一下?
谢谢。
第一个版本是通用的 class。 LoggedVar[int]
是 class 的特化,它在其构造函数中采用 int
作为 value
参数。如果在 class 中还有 T
的任何其他用途,则 T
的值必须匹配。
第二个版本是一个非泛型 class 和一个泛型 __init__
方法。 T
将根据您传递的 value
推导出不同的东西,但是无法像 LoggedVar[int]
那样声明 class 的特化,如果使用其他方法 T
,这些将是单独的通用方法,不要求 T
匹配为 __init__
.