Мне кажется довольно распространенным аргумент на динамически типизированном языке, который является либо объектом, либо ключом для поиска этого объекта. Например, когда я работаю с базой данных, у меня может быть метод getMyRelatedStuff (person)
Все, что мне действительно нужно для поиска связанных вещей, это идентификатор человека, чтобы мой метод мог выглядеть следующим образом в python:
def getMyRelatedStuff(person_or_id):
id = person_or_id.id if isinstance(person,User) else person_or_id
#do some lookup
Или идет в другом направлении:
def someFileStuff(file_or_name):
file = file_or_name if hasattr(file,'write') else open(file_or_name)
РЕДАКТИРОВАТЬ: я ищу встроенный синтаксис для этого, наиболее близким, что я могу придумать, являются неявные и явные ключевые слова в C #, которые позволяют вам определять приведение между типами.