Я пытаюсь подражать чему-то, называемому «префиксным деревом» в Python.Перегрузка операторов для пользовательских типов в Python
Мой класс имеет метод __contains__
, так что я могу проверить, если дал слово в этом дереве:
class PrefTree():
...
def __contains__(self, word):
#some code...
...
pt = PrefTree()
...
w = "someword"
if w in pt:
print("Aye, found it.")
Но я также хотел бы иметь какой-то особый __contains__
метод проверки членства с помощью специального правила. Поэтому мне нужно «другое» in
, чтобы проверить членство с этим методом. Каков наилучший способ реализовать это?
Не уверен, что я понимаю ваш вопрос. Вы не можете создавать новые операторы. Существует только один оператор 'in', и вы можете перегрузить его, чтобы сделать одно (за класс). Если у вас есть другой тип проверки, вы можете использовать другой существующий оператор или просто дать вашему классу метод, чтобы люди вызывали 'obj.specialContains (что угодно)'. – BrenBarn
Это правда, я могу добавить метод для этого, но, на мой взгляд, это выглядело бы намного лучше и более питонично, если бы я мог сделать 'if w special_in pt' –
Ну, вы не можете. Вы не можете определить своих собственных операторов; вы можете определить поведение для существующих операторов. – BrenBarn