Расширение встроенного оператора Python - PullRequest
2 голосов
/ 07 июня 2011

Я создаю подкласс float, называемый aF, который содержит дополнительную информацию и методы. Мне нужно создать операции для этого класса, и, в частности, мне нужно иметь возможность вычислять произведение нормального числа с плавающей запятой с этим aF.

Как я могу расширить оператор * для float, чтобы float * augmentedFloat возвращал augmentedFloat, который соответствует моим потребностям?

Я знаю, что должен написать что-то вроде def float.__mul__(), но боюсь, что я удалю стандартное определение оператора * для float.

Вы можете мне помочь?

Спасибо

1 Ответ

2 голосов
/ 07 июня 2011

Предположим, f - это float, а af - это AugmentedFloat. Чтобы оба умножения af * f и f * af работали, необходимо перезаписать методы __mul__() и __rmul__(). Вам не нужно добавлять какие-либо методы к встроенному типу float - это даже невозможно в Python.

...