Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #84526
| From | Mark Lawrence <breamoreboy@yahoo.co.uk> |
|---|---|
| Subject | Re: Delegation in Python |
| Date | 2015-01-24 23:59 +0000 |
| References | <FeCdnXdsTpunvlnJnZ2dnUVZ8judnZ2d@brightview.co.uk> <CAPTjJmoVxi_VXKJ93W=rPNnZiud6O_mXyxm+2tMG8BoQBqH-Ew@mail.gmail.com> <54C42D9D.7010305@digipen.edu> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.18113.1422144008.18130.python-list@python.org> (permalink) |
On 24/01/2015 23:41, Gary Herron wrote: > On 01/24/2015 03:22 PM, Chris Angelico wrote: >> On Sun, Jan 25, 2015 at 9:57 AM, Brian Gladman <noone@nowhere.net> wrote: >>> But I am not clear on how to delegate from my new class to the existing >>> Fraction class. This is what I have: >>> >>> -------------------------- >>> class RF(Fraction): >>> >>> def __new__(self, x, y): >>> super().__new__(self, x, y) >>> >>> def is_integer(self): >>> return self.numerator % self.denominator == 0 >>> >>> def __getattr__(self, attr): >>> return getattr(self, attr) >> If you just drop everything but your new method, it should work just >> fine. >> >> class RF(Fraction): >> def is_integer(self): >> return self.numerator % self.denominator == 0 >> >> However, this doesn't ensure that operations on RFs will return more >> RFs - they'll often return Fractions instead. There's no easy fix for >> that, sorry. >> >> ChrisA > > 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 > > > Gary Herron > As regards this being a bad idea I'd suggest the latest score is Practicality 1 Purity 0 :) -- My fellow Pythonistas, ask not what our language can do for you, ask what you can do for our language. Mark Lawrence
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Delegation in Python Brian Gladman <noone@nowhere.net> - 2015-01-24 22:57 +0000
Re: Delegation in Python Chris Angelico <rosuav@gmail.com> - 2015-01-25 10:22 +1100
Re: Delegation in Python Brian Gladman <noone@nowhere.net> - 2015-01-24 23:38 +0000
Re: Delegation in Python Chris Angelico <rosuav@gmail.com> - 2015-01-25 10:43 +1100
Re: Delegation in Python Brian Gladman <noone@nowhere.net> - 2015-01-25 00:18 +0000
Re: Delegation in Python Chris Angelico <rosuav@gmail.com> - 2015-01-25 11:28 +1100
Re: Delegation in Python Brian Gladman <noone@nowhere.net> - 2015-01-25 07:49 +0000
Re: Delegation in Python Chris Angelico <rosuav@gmail.com> - 2015-01-25 19:07 +1100
Re: Delegation in Python Gary Herron <gherron@digipen.edu> - 2015-01-24 15:47 -0800
Re: Delegation in Python Brian Gladman <noone@nowhere.net> - 2015-01-24 23:58 +0000
Re: Delegation in Python Gary Herron <gherron@digipen.edu> - 2015-01-24 15:41 -0800
Re: Delegation in Python Brian Gladman <noone@nowhere.net> - 2015-01-24 23:52 +0000
Re: Delegation in Python Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-01-24 23:59 +0000
Re: Delegation in Python Chris Angelico <rosuav@gmail.com> - 2015-01-25 11:07 +1100
Re: Delegation in Python Terry Reedy <tjreedy@udel.edu> - 2015-01-24 20:31 -0500
Re: Delegation in Python Brian Gladman <noone@nowhere.net> - 2015-01-25 07:43 +0000
csiph-web