Как сделать универсальный класс идентификатора в Python 3.7 - PullRequest
0 голосов
/ 30 апреля 2019

Исходя из фона 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. Это возможно и если да, то как?

...