Overloading objects
Tom Lee
tl_nntp at webcrumb.com
Tue Sep 2 05:58:29 EDT 2003
Batista, Facundo wrote:
> In others languages I can do (using sintaxis of Python):
>
>
> def myMethod (self, name):
> self.name = name
>
> def myMethod (self, name, age):
> self.name = name
> self.age = age
>
>
> If I'm not wrong, this is "Method Overloading".
>
> I thought using defaults:
>
> def myMethod (self, name, age=None):
> self.name = name
> if age not None:
> self.age = age
>
>
> but I'm concerned about the scalability of this.
>
> What's the most pythonic way to do this? Using something like *args or
> **args?
>
> Thank you!
>
>
> . Facundo
Scalability doesn't even come into this question - if you're really
worried about performance, don't use Python.
Anyway, you have two or three choices:
1. Do it the way you're doing it.
2. Check parameter types at runtime using type() and the is keyword. e.g.
if type( somevar ) is int:
self.do_int_stuff( somevar )
else:
self.do_other_stuff( somevar )
3. Use similar names for similar methods. wxPython does this. e.g.
def Clean( self, something ):
# common implementation
def CleanWithScourer( self, something ):
# implementation using a Scourer instead of the default cleaning
implement
Hope this helps.
- Tom L
More information about the Python-list
mailing list