Un descripteur python avec lequel je travaille partage sa valeur sur toutes les instances de sa classe propriétaire. Comment puis-je faire en sorte que le descripteur de chaque instance contienne ses propres valeurs internes?descripteurs python partageant des valeurs entre classes
class Desc(object):
def __init__(self, initval=None,name='val'):
self.val = initval
self.name = name
def __get__(self,obj,objtype):
return self.val
def __set__(self,obj,val):
self.val = val
def __delete__(self,obj):
pass
class MyClass(object):
desc = Desc(10,'varx')
if __name__ == "__main__":
c = MyClass()
c.desc = 'max'
d = MyClass()
d.desc = 'sally'
print(c.desc)
print(d.desc)
La sortie est cela, le dernier appel mis la valeur pour les deux objets:
localhost $ python descriptor_testing.py
sally
sally
Je pense qu'une partie du problème est qu'il y a un exemple sur python.org qui est fondamentalement faux pour la même raison. C'est l'exemple de descripteur dans http://docs.python.org/howto/descriptor.html et c'est le premier résultat pour googler des descripteurs python. – damix911