В библиотеке анализатора, которую я поддерживаю, у меня есть несколько классов, которые наследуют от str для управления проанализированными строками и анализовыми символами. Это работало хорошо в течение долгого времени, но с Python 3.10 кто -то попросил использовать возможность использовать Match и case в этих классах. Я построил пример сценария, который показывает, как это терпит неудачу: < /p>
class Binge(str):
def __eq__(self, other):
return self.__class__ == other.__class__ and str.__eq__(self, other)
def __ne__(self, other):
return not self == other
# These two asserts are important for how the class is used
assert Binge('a') == Binge('a')
assert Binge('a') != 'a'
# What does it take to then make this work?
matched = False
match Binge("asdf"):
case Binge("asdf"):
matched = True
assert matched
< /code>
Если я добавлю: < /p>
print(self.__class__, other.__class__)
В функции __eq __ я вижу это:
Подробнее здесь: https://stackoverflow.com/questions/796 ... ython-3-10
Использование сопоставления рисунков с классом, которое наследует от Str в Python 3.10 ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение