inheritance question...

Hamish McKenzie hamish at valvesoftware.com
Fri Jun 20 17:19:37 EDT 2008


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 )


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





More information about the Python-list mailing list