Hi all, I have a problem with the use of descriptors and super. The file is :
# --------------- class Desc(object): def __init__(self, class_name): self.class_name = class_name return def __get__(self, obj, typ): print "Desc.__get__ : class_name is %s, obj is %s and typ is %s"%(self.class_name, obj, typ) return pass class A(object): attr = Desc("A") pass class B(A): attr = Desc("B") pass b = B() print "-------" print "Getting b.attr ..." print "I hope that : class_name is B, obj is b and typ is B" b.attr print "-------" print "Getting super(B, b).attr ..." print "I hope that : class_name is A, obj is b and typ is A but it is not the case !" super(B, b).attr print "-------" # ----------- and the result is : ------- Getting b.attr ... I hope that : class_name is B, obj is b and typ is B Desc.__get__ : class_name is B, obj is <__main__.B object at 0xb7b1f8ec> and typ is <class '__main__.B'> ------- Getting super(B, b).attr ... I hope that : class_name is A, obj is b and typ is A but it is not the case ! Desc.__get__ : class_name is A, obj is <__main__.B object at 0xb7b1f8ec> and typ is <class '__main__.B'> ------- I expected that when getting super(B, b).attr, typ is A, but it is not the case ... python used : [EMAIL PROTECTED] /home/adam/Work/Python]> python Python 2.4.3 (#2, Sep 18 2006, 21:07:35) [GCC 4.1.1 20060724 (prerelease) (4.1.1-3mdk)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Best regards, E.A. -- http://mail.python.org/mailman/listinfo/python-list