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