Поскольку ОП упоминает в комментарии:
Я хочу 1 and 2
вернуть экземпляр
моего класса.
Я думаю, важно отметить, что это абсолютно невозможно: Python не позволяет вам изменять встроенных типов (и, в частности, их специальные методы). Литерал 1
всегда будет экземпляром встроенного типа int
, и в любом случае базовая семантика оператора and
не может быть переопределена в любом случае - a and b
равен , всегда идентичен b if a else a
для любых a
и b
(без принуждения bool
, даже если ОП, кажется, ошибочно полагает, что что-то происходит).
Повторяя этот важный момент: значение a and b
равно всегда, неизменно или a
или b
- есть нет способ разорвать это семантическое ограничение ( даже если a
и b
были экземплярами ваших собственных специфических классов - тем более, конечно, когда они ограничены экземплярами встроенного в Python int
! -).