[Edu-sig] quantum instance?
Scott David Daniels
Scott.Daniels at Acm.Org
Sun Sep 11 00:30:17 CEST 2005
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
Scott.Daniels at Acm.Org
More information about the Edu-sig
mailing list