Here's another example of defining a class by stuffing an empty shell with
externally defined methods.  It's really just another way of organizing
code, perhaps to bring out some aspect of the knowledge domain.

Here, we're in geometry, talking about how a given polyhedron (tetrahedron,
cube, you name it), when scaled, changes its edge, surface area, and volume.
The scale factor is here applied directly to the edge, i.e. a scale factor
of 3 trebles every edge in size (like zooming in by 3x).  This has 2nd and
3rd powering side effects on area and volume, as these functions make clear:

 IDLE 1.1      
 >>> class Shape (object):  pass

 >>> def build(self, edge = 1, area = 1, volume = 1):
         self.edge = edge
         self.surface = area
         self.volume = volume

        
 >>> def scale(self, factor):
         self.edge *= factor
         self.surface *= factor**2
         self.volume *= factor**3

        
 >>> def reporter(self):
         return "Shape <%s, %s, %s>" % (self.edge, self.surface,
self.volume) 

 >>> Shape.__init__ = build
 >>> Shape.__mul__ = scale
 >>> Shape.__repr__ = reporter
 >>> myshape = Shape()
 >>> myshape
 Shape <1, 1, 1>
 >>> myshape * 3
 >>> myshape
 Shape <3, 9, 27>
 >>> myshape * 0.125
 >>> myshape
 Shape <0.375, 0.140625, 0.052734375>

Kirby


_______________________________________________
Edu-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to