Sono uno sviluppatore C ++ / C # e recentemente ho iniziato a imparare Python. Penso di capire il concetto di digitazione anatra adesso eccetto per una cosa.
Quando sto codificando in C ++ o C # a volte creo classi completamente estranee che hanno metodi simili con firme simili, ad esempio: Create (), Open (), Close (), ProcessData (), ecc. Non è un un grosso problema in C ++ o C # (a meno che non vogliate scherzare con i modelli C ++), ma in lingue con digitazione anatra come Python questo potrebbe causare un disastro. Considera il seguente esempio:
class DbTransaction:
def rollback(self):
pass
class SourceControlChangeset:
def rollback(self):
pass
def rollback_transaction(transaction):
transaction.rollback()
transaction = DbTransaction()
changeset = SourceControlChangeset()
rollback_transaction(transaction)
rollback_transaction(changeset) # Oops!
Forse essere un esempio è un po 'artificiale, ma penso che questo potrebbe accadere abbastanza facilmente in un grande progetto con molte classi.
Cosa dovrei fare in questa situazione? Penso che il controllo dei tipi non sia "pythonic", quindi la mia unica idea è di cambiare la convenzione di denominazione per i metodi di classe come questo:
class DbTransaction:
def rollback_transaction(self):
pass
class SourceControlChangeset:
def rollback_changeset(self):
pass
Qualche idea?