[Edu-sig] quantum instance?

2005-09-10 Thread Arthur
Trying to handle the sudden change of state of an instance of an object 
- a quantum instance

c starts as a Circle instance.

Say, in the course of the manipulation of c its radius approaches 
towards infinity, and upon the radius becoming  than some Max, I want c 
to suddenly think of itself as a Line instance rather than as a Circle 
instance.

doable?

hints?

Art

 
___
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig


Re: [Edu-sig] quantum instance?

2005-09-10 Thread Scott David Daniels
Arthur wrote:
 Trying to handle the sudden change of state of an instance of an object 
 - a quantum instance
 
 c starts as a Circle instance.
 
 Say, in the course of the manipulation of c its radius approaches 
 towards infinity, and upon the radius becoming  than some Max, I want c 
 to suddenly think of itself as a Line instance rather than as a Circle 
 instance.
 
 doable?
 
 hints?
 
 Art

As a sketch:

class Blended(object):
 MaxRadius = 123456

 def __init__(self, radius):
 self._active = Circle(radius=radius)
 self._other = Line()
 self.radius = radius  # Switch to Line if necessary

 def __getattr__(self, name):
 return getattr(self._active, name)

 def __setattr__(self, name, value):
if name[0] == '_':
object.__setattr__(self, name, value)
elif name[0] != 'radius':
return setattr(self, value)
 if value  self.MaxRadius:
 if isinstance(self._active, Line):
 self._active, self._other = self._other, self._active
 else:
 if isinstance(self._active, Circle):
 self._active, self._other = self._other, self._active
 self._active.radius = value


You could read up on __getattr__, __getattribute__, and friends in
the Language References section 3.3.2:
 Customizing attribute access

--Scott David Daniels
[EMAIL PROTECTED]

___
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig