У меня есть класс, который я расширяю с помощью int, чтобы получить удобную встроенную математику int
( например. +, -, >>, et c. )
class C(int):
def __init__(self, byte):
self.byte=byte;
def __str__(self):
return str(self.byte);
def bin(self):
return bin(self.byte)[2:].zfill(8);
def set(self, x):
self.byte |= 1<<(x-1)
#---snip---
Это прекрасно работает, пока я не использую метод из int
, потому что int
возвращает int
.
>>> a=C(0x87)
>>> a
135
>>> a.bin()
'10000111'
>>> a.set(7)
>>> a.bin()
'11000111'
>>> type(a)
<class '__main__.C'>
>>> a+=3
>>> type(a)
<class 'int'>
>>> a.set(6) #AttributeError
Я понимаю, что могу переопределить любой из int
методы путем жесткого кодирования нового определения для каждого, но я хочу избежать этого, если это возможно. Математика - это уже все, я просто хочу изменить поведение в C
.