Python no funciona sobrecarga. Esto es una consecuencia de que es un lenguaje débilmente tipado. En su lugar, puede especificar un número desconocido de argumentos y tratar su interpretación en la lógica de la función.
Hay varias formas de hacerlo. Puede especificar argumentos opcionales específicos:
def func1(arg1, arg2=None):
if arg2 != None:
print "%s %s" % (arg1, arg2)
else:
print "%s" % (arg1)
Llamándola obtenemos:
>>> func1(1, 2)
1 2
o puede especificar un número indeterminado de argumentos sin nombre (es decir,argumentos que se pasan en un array):
def func2(arg1, *args):
if args:
for item in args:
print item
else:
print arg1
llamándolo obtenemos:
>>> func2(1, 2, 3, 4, 5)
2
3
4
5
o puede especificar un número indeterminado de argumentos con nombre (es decir, pasaron en un diccionario de argumentos):
def func3(arg1, **args):
if args:
for k, v in args.items():
print "%s %s" % (k, v)
else:
print arg1
llamándolo recibimos:
>>> func3(1, arg2=2, arg3=3)
arg2 2
arg3 3
Puede usar estas construcciones para producir el comportamiento que estaba buscando en la sobrecarga.
* * Por favor heredar de objeto! Usted realmente no quiere una clase de estilo antiguo, ¿verdad? (Esto no sería un problema en Python 3, pero las instrucciones de impresión me dicen que estás usando Python 2.) –