inheritance question...

Guilherme Polo ggpolo at gmail.com
Fri Jun 20 18:20:39 EDT 2008


On Fri, Jun 20, 2008 at 6:19 PM, Hamish McKenzie
<hamish at valvesoftware.com> wrote:
>
> I have this class:
>
> class Vector(object):
>     TOL = 1e-5
>     def __eq__( self, other, tolerance=TOL ):
>           print tolerance
>
>
> shortened for clarity obviously.  so I want to subclass this class like
> so:
>
> class BigVector(Vector)
>     TOL = 100
>
>
> for example if I was working with large vectors which I knew would never
> be very close hence the large tolerance.  this doesn't work however -
> the TOL class variable, while overridden in BigVector, is still using
> the Vector.TOL variable in the __eq__ method.
>
>
> which kinda makes sense to a certain degree, but how do I get the
> behaviour where doing:
>
> BigVector().__eq__( otherVec )

No, don't do this. Just do "avector == othervector"

>
>
> prints 100 instead of 1e-5?
>
> does this question make sense?  not sure how clearly I'm phrasing my
> question...  any of you guys python experts?
>
>
> I *could* do this, but its ugly:
>
> class Vector(object):
>     TOL = 1e-5
>     def __eq__( self, other, tolerance=None ):
>           if tolerance is None: tolerance = self.TOL
>           print tolerance
>

class Vector(object):
    TOL = 1e-5
    def __eq__(self, other):
           print self.TOL

>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
-- Guilherme H. Polo Goncalves



More information about the Python-list mailing list