Может ли объект вернуть целое число, но иметь собственный тип? - PullRequest
0 голосов
/ 12 мая 2018

Возможно ли это сделать в Python:

class Foo():
    def __init__(self):
        self.bar = MyClass()

foo = Foo()  

assert foo.bar == 0
assert type(foo.bar) == MyClass

Если 0 был строкой, тогда __repr__ можно было бы использовать в MyClass. Значение будет равно 0, но тип будет MyClass. Но поскольку __repr__ может возвращать только строку, а foo.bar должен быть int, __repr__ не работает. Так возможно ли, чтобы MyClass () давал значение 0 (int), но при этом сохранял свой тип как MyClass?

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете выполнить то, о чем говорите, используя пакет numbers стандартной библиотеки Python, который реализует PEP 3141 .В частности, вы можете получить MyClass из numbers.Integral и при необходимости переопределить специальные методы.

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