Você não pode, nunca precisa e realmente não quer.
No Python, tudo é um objeto. Classes são coisas, então são objetos. Então são métodos.
Há um objeto chamado, A
que é uma classe. Ele tem um atributo chamado stackoverflow
. Só pode ter um desses atributos.
Quando você escreve def stackoverflow(...): ...
, o que acontece é que você cria um objeto que é o método e o atribui ao stackoverflow
atributo de A
. Se você escrever duas definições, a segunda substitui a primeira, da mesma maneira que a atribuição sempre se comporta.
Além disso, você não deseja escrever um código que faça o tipo mais selvagem de coisas para as quais a sobrecarga às vezes é usada. Não é assim que a linguagem funciona.
Em vez de tentar definir uma função separada para cada tipo de coisa que você poderia receber (o que faz pouco sentido, já que você não especifica tipos para parâmetros de função), pare de se preocupar com o que são as coisas e comece a pensar no que elas podem fazer .
Você não apenas pode escrever um documento separado para lidar com uma tupla versus uma lista, mas também não quer ou precisa .
Tudo o que você faz é aproveitar o fato de que ambos são, por exemplo, iteráveis (ou seja, você pode escrever for element in container:
). (O fato de eles não estarem diretamente relacionados por herança é irrelevante.)