Gabriel Genellina schrieb:
I have a class attribute 'foo' which is a data descriptor. I create an
instance of such class. When I say instance.foo = value, the descriptor
__set__ method is called. Is there any way to obtain the name being
assigned to? ('foo' in this example). That is, I want to know the target
name for the assignment that triggered the __set__ method call.
class descriptor(object):
def __get__(self, instance, owner):
return self
def __set__(self, instance, value):
# I want to know the *name* this value is being assigned to
for name in instance.__class__.__dict__:
if getattr(instance, name) is self:
print "assigning to %s" % name
break
class X(object):
foo = descriptor()
bar = descriptor()
class Y(object):
foo = descriptor()
baz = descriptor()
x = X()
y = Y()
x.foo = "value"
x.bar = "value"
y.foo = "value"
y.baz = "value"
Does this work for you?
Rainer
--
http://mail.python.org/mailman/listinfo/python-list