J'essaye d'implémenter quelque chose comme des trouveurs dynamiques de Rails en Python (pour webapp/GAE). Les moteurs de recherche dynamiques fonctionnent comme ceci:Finders dynamiques et méthode manquant en Python
- Votre personne possède des champs: nom, âge et adresse électronique.
- Supposons que vous vouliez trouver tous les utilisateurs dont le nom est "Robot".
La classe Person a une méthode appelée « find_by_name » qui reçoit le nom et renvoie le résultat de la requête:
@classmethod
def find_by_name(cls, name):
return Person.gql("WHERE name = :1", name).get()
Au lieu d'avoir à écrire une méthode comme celle pour chaque attribut, je J'aimerais avoir quelque chose comme Methodymy de Ruby qui me permet de le faire.
Jusqu'à présent, j'ai vu ces messages 2 blog: http://blog.iffy.us/?p=43 et http://www.whatspop.com/blog/2008/08/method-missing-in-python.cfm mais je aime entendre ce qui est de la façon de faire « la plus correspond le » il.
J'ai essayé d'utiliser ce code mais j'obtiens toujours: 'AttributeError (" type object 'FindableModel' n'a pas d'attribut 'find_by_name' ",)'. Pouvez-vous expliquer un peu plus comment l'utiliser? – hakunin
@hakunin Comment l'utilisez-vous? Vous devriez en faire la classe parente de votre modèle. –
Voici le modèle que j'utilise: https://gist.github.com/2014164 J'adorerais utiliser '__getattr__' mais il n'est tout simplement pas appelé pour une raison quelconque. – hakunin