Delegation in Python

Brian Gladman noone at nowhere.net
Sat Jan 24 18:52:06 EST 2015


On 24/01/2015 23:41, Gary Herron wrote:

[snip]>
> You can always "monkey-path" the Fraction class on the fly to add a new
> method to it.  I think most would consider this a bad idea, but it does
> work.
> Try this:
> 
>>>> from fractions import Fraction
>>>> def is_integer(self):
> ...     return self.numerator % self.denominator == 0
> ...
>>>> Fraction.is_integer = is_integer # Monkey-patch Fraction
>>>>
>>>> Fraction(1,2).is_integer()
> False
>>>> Fraction(2,1).is_integer()
> True

Thanks Gary.  As Chris says, the method he suggests is problematic since
anything delegated returns a Fraction, not an RF.  Patching Fraction
looks nicer to use even if it is frowned on.

   Brian




More information about the Python-list mailing list