Как добавить набор понимания, как объединение и пересечение с классом Python? - PullRequest
0 голосов
/ 17 октября 2019

Я хочу создать класс без наследования frozenset (если только я не могу наследовать tuple и frozenset без получения TypeError: multiple bases have instance lay-out conflict), где я могу использовать понимание набора, например |, &, < и > операторов.

A = {"first"}
B = {"second"}
C = A | B

class Custom(tuple):
    def __new__(self, pair, **metadata):
        return super(Custom, self).__new__(self,tuple(pair))
    def __init__(self, pair, **metadata):
        self.pair = tuple(pair)
        self.metadata = metadata

pair_1 = Custom(["A","B"])
pair_2 = Custom(["B","C"])
pair_1 | pair_2

Я не смог найти никаких "специальных" функций, которые делают это.

1 Ответ

2 голосов
/ 17 октября 2019

Специальные методы документированы здесь ;вам нужно __and__, __or__, __lt__ и __gt__.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...