bonjour à tous,
j'essaye désespérément de me créer ma propre ORM
avec la possibilité de vérifier ou transformer le type de la valeur passée
pour cela, je me suis tourné d'abord vers les attributs
en redéfinissant le __setattr__ et le __getattr__
j'arrive à m'en sortir
mais du coup, je ne peux plus instancier mon objet :
class utilisateur(object):
nom= "default"
...........
user1 =utilisateur()
user2 =utilisateur()
user1.nom = "nouveau"
print user2.nom -> me retourne "nouveau"
premier arrachage de cheveux, mais j'ai compris que j'avais crée une variable pour ma classe, donc commune à toute mes instances
j'ai le même problème avec les property et les fget, fset, fdel
et impossible de le faire avec une instance
pourtant , quand je regarde la doc d'une ORM comme elixir
class utilisateur(Entity):
nom = Field (je sais plus trop la syntax )
je peux bien instancier utilisateur sans aucun probléme, et quand j'assigne une valeur à nom, il reste toujours en type Field et nom en type String
j'ai bien essayé de décortiquer le code d'Elixir, mais Entity dérive de Property qui dérive de ... qui dérive de .....................
deuxieme arrachage de cheveux
donc je suis preneur si quelqu'un peux me donner une piste pour résoudre mon problème
ou du moins qui a un peu pitié de mon cuir chevelu
merci de votre aide, bon weekend
Kermit
[edit]:
j'ai oublié de precier
j'ai essayé une autre méthode :
retourné la valeur dans un dictionnaire "d'instance", qui contient les mêmes key que mes attributs, dans le __getattr__
mais la, le __getattr__ s'appelle en boucle jusqu'à qu'une erreur soit levée
Partager