Mas o menos entiendo lo que quieres hacer. Primero que nada esto no es parecido a ningún lenguaje compilado que hayas visto antes (ejem. Java).
Si te das cuenta los parámetros no tienen ningún tipo de dato.
Vamos a crear una función simple.
Código Python:
Ver originaldef contar(lista, objetivo):
return objeto.count(objetivo)
print contar([1, 2, 3], 3) # 1
print contar("abcdeb", 'b') # 2
print contar(10101, 1) #Error
Esto funciona por que las listas y las cadenas poseen el método count. Mientras que los enteros no poseen dicho método. Es a lo que se llama duck typing (si se ve como un pato y hace como pato entonces es un pato). Vaya lo que quiero decir es que si tu asumes que el parámetro que estas recibiendo en tu función o método posee ciertos métodos (o propiedades) y realmente los tiene no debería de arrojar un error.