Я хочу реализовать методы neg () и index () в классе iFuzzBool, но когда я создаю экземпляр, '-' отлично печатает отрицательное значение. Что я делаю не так?
class iFuzzBool(float):
def __new__(cls, value=0.0):
return super().__new__(cls, value if 0.0 <= value <=1.0 else 0.0)
for name, operator in (("__neg__","-"), ("__index__", "index()")):
message = ("bad operand type for unary {0}: '{{self}}'".format(operator))
exec("def {0}(self): raise TyperError(\"{1}\".format(self=self.__class__.__name__))".format(name, message))
def __invert__(self):
return iFuzzBool(1.0 - float(self))
def __and__(self, other):
return iFuzzBool(min(self, other))
def __repr__(self):
return f"{self.__class__.__name__}({super().__repr__()})"
me_fuzz = iFuzzBool(.234)
print(-me_fuzz)
Ожидаемый результат должен вызвать ошибку TypeError