Lichen

tests/getattr.py

588:316c1c90b643
2017-02-17 Paul Boddie Eliminated superfluous accessor instructions loading static invocation targets. Added a test of nested calls employing explicitly retained contexts. method-wrapper-for-context
     1 class C:     2     def __init__(self):     3         self.x = 1     4         self.y = 2     5         self.z = 3     6      7 class D:     8     def __init__(self):     9         self.x = 4    10         self.y = 5    11         self.z = 6    12     13 c = C()    14 d = D()    15     16 attrnames = ["a", "b", "c", "x", "y", "z"]    17     18 print ". c d"    19     20 for attrname in attrnames:    21     print attrname, hasattr(c, attrname) and "1" or "0", hasattr(d, attrname) and "1" or "0"    22     23 print    24 print ". c d"    25     26 for attrname in attrnames:    27     print attrname,    28     try:    29         v = getattr(c, attrname)    30         print v,    31     except AttributeError:    32         print "?",    33     34     try:    35         v = getattr(d, attrname)    36         print v    37     except AttributeError:    38         print "?"    39     40 try:    41     setattr(c, "x", 7)    42 except NotImplementedError, exc:    43     print 'setattr(c, "x", 7): not implemented:', exc.name