Signature-based Function Overloading in Python

Jean-Michel Pichavant jeanmichel at sequans.com
Wed Feb 24 05:28:13 EST 2010


Michael Rudolf wrote:
> Just a quick question about what would be the most pythonic approach 
> in this.
>
> In Java, Method Overloading is my best friend, but this won't work in 
> Python:
>
> >>> def a():
>     pass
> >>> def a(x):
>     pass
> >>> a()
> Traceback (most recent call last):
>   File "<pyshell#12>", line 1, in <module>
>     a()
> TypeError: a() takes exactly 1 argument (0 given)
>
> So - What would be the most pythonic way to emulate this?
> Is there any better Idom than:
>
> >>> def a(x=None):
>     if x is None:
>         pass
>     else:
>         pass
>
> ?
>
> Thanks,
> Michael
This is the way to do it python, and it has its advantages: 1 docstring, 
1 way do do it, 1 interface.

JM



More information about the Python-list mailing list