Реализуемые методы - PullRequest
       18

Реализуемые методы

0 голосов
/ 25 марта 2019

Я хочу реализовать методы 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

1 Ответ

0 голосов
/ 25 марта 2019

Не пытайтесь наследовать от float, а затем удаляйте методы.Определите класс, который делает то, что вы хотите, с плавающей точкой в ​​качестве атрибута.

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