Исходя из фона Java, я знаю, что, например, идентификатор может быть реализован как универсальный, как это:
public class Id<T> {
private String _id;
private Id(String idString) {
this._id = idString;
}
public static <Type> Id<Type> valueOf(String idString) {
return new Id<Type>(idString);
}
}
Id<ObjectA> a = Id.valueOf("1");
Id<ObjectB> b = Id.valueOf("1");
В этом примере, хотя оба идентификатора содержат строку «1», их нельзя сравнивать, поскольку их универсальные типы различны.
Я пытаюсь реализовать ту же структуру в Python и начал с NamedTuple:
from typing import NamedTuple
class Id(NamedTuple):
id: str
def __eq__(self, other):
if not isinstance(other, Id):
return False
else:
if self.id != other.id:
return False
return True
Я хочу добавить дженерики, чтобы я мог создать Id, как в Java. Это возможно и если да, то как?