overloading *something

Leif K-Brooks eurleif at ecritters.biz
Mon Nov 7 23:43:11 EST 2005


James Stroud wrote:
> Hello All,
> 
> How does one make an arbitrary class (e.g. class myclass(object)) behave like 
> a list in method calls with the "*something" operator? What I mean is:
> 
> myobj = myclass()
> 
> doit(*myobj)

Make it iterable:

 >>> class Foo(object):
 ...     def __iter__(self):
 ...         yield 1
 ...         yield 2
 ...         yield 3
 ...
 >>> def bar(*args):
 ...     print args
 ...
 >>> bar(*Foo())
 (1, 2, 3)


> And, how about the "**something" operator?

Use a dictionary.



More information about the Python-list mailing list