Why property works only for objects?
bdesth.quelquechose at free.quelquepart.fr
Sat Mar 11 03:56:03 CET 2006
Michal Kwiatkowski a écrit :
> Alex Martelli napisał(a):
>>Wrong! Of _course_ it's an option -- why do you think it matters at all
>>whether you're the creator of this object?!
>>def insert_property(obj, name, getter, setter):
>> class sub(obj.__class__): pass
>> setattr(sub, name, property(getter, setter))
>> obj.__class__ = sub
>>See? Of COURSE you can subclass -- not hard at all, really.
> Let me understand it clearly. If I change __class__ of an object,
> existing attributes (so methods as well)
> of an object are still
> accessible the same way and don't change its values. Only resolution of
> attributes/methods not found in object is changed, as it uses new
> version of __class__ to lookup names. Is this right?
Attributes, yes. Not methods. Methods are looked up in the class. But in
the example above (brillant, as usual), Alex dynamically creates a
subclass of obj.__class__, so inheritence takes care of methods lookup.
More information about the Python-list