Код: Выделить всё
class MyFloat(float):
def __new__(cls,number,extra):
return super().__new__(cls,number)
def __init__(self,number,extra):
float.__init__(number)
self.extra = extra
Теперь предположим, что мы хотим, чтобы вместо этого он возвращал MyFloat, равный MyFloat(1.0,'hi'). Первой мыслью было бы добавить
Код: Выделить всё
def __add__(self,other):
return MyFloat(self+other,self.extra)
Есть есть несколько очевидных способов справиться с этим, но все они кажутся очень хаотичными. Есть преобразование в float:
Код: Выделить всё
def __add__(self,other):
return MyFloat(float(self)+other,self.extra)
Код: Выделить всё
def __add__(self,other):
return MyFloat(float.__add__(self,other),self.extra)
А что, если я захочу получить доступ неизменяемая часть в другом контексте? Например, если я хочу, чтобы дополнительная часть по какой-то причине была обновлена до f"{self+1.0}", где self здесь является неизменяемой частью, как мне это получить часть настроена?
Подробнее здесь: https://stackoverflow.com/questions/790 ... table-type