[Edu-sig] Properties use case
John Zelle
john.zelle at wartburg.edu
Sun Mar 19 03:10:04 CET 2006
On Saturday 18 March 2006 16:39, Michael Tobis wrote:
>
> So, is there a problem with wrapping them thus:
>
> ###
> class mcx(object):
>
> def __init__(self,val):
> self.val = complex(val)
>
> def __add__(self,other):
> """ and similarly for most other special methods """
> return self.val.__add__(other)
> ###
>
This reminds me of a question I have with new-style classes. With classic
Python classes, we can do something like this even more simply with getattr
magic:
class Mutable:
def __init__(self, value):
self.value = value
def __getattr__(self,name):
return getattr(self.value, name)
This saves me the trouble of having to specifically reimplement all of the
methods just so that I can trivially pass the work off to self.value.
Everything works just fine:
>>> from mutable import Mutable
>>> x = Mutable(3+5j)
>>> x
(3+5j)
>>> x + (4+7j)
(7+12j)
>>> print x
(3+5j)
>>> x.value = 3
>>> x + 4
7
I've used this technique to good advantage when mixing objects from different
toolkits. My question is, is there an easy way to do this with new-style
classes?
While I'm on the thread, let me just add my 2 cents on Arthur's "creepy"
mutable complex type. I understand all of the arguments about the potential
pitfalls of mutable types (I'm one of those "CS types," don't you know :-).
But OOP is all about mutable objects. As a _design_ decision, if a mutable
complex will streamline my system, or make it more intuitive, then I wouldn't
hesitate to do it.
I think the "creepiness" here is just in the name. We don't expect complex
numbers to be mutable. Let's call the new type a complex container with
auto-unboxing. Does anyone object to a mutable container? I hope not, we used
to just call them variables. Since the contents are isomorphic to complex, it
could be handy to have the container object also duck-type to a complex (or
whatever else it contained). I don't see any creepiness in that. Of course,
this kind of thinking could get out of hand. The next thing you know people
might use these to simulate wacko things like reference parameters (oh, the
horror! :-)
Just my 2 cents.
--John
--
John M. Zelle, Ph.D. Wartburg College
Professor of Computer Science Waverly, IA
john.zelle at wartburg.edu (319) 352-8360
More information about the Edu-sig
mailing list