2018-07-21 | Paul Boddie | raw annotate files changeset graph | Invocations in parameter lists may require temporary storage for contexts and accessors, but the storage locations must be different. Otherwise, the code will generate a sequence-point warning. Here, distinct ranges for parameters in lists are introduced, and accessors are now also stored in arrays, permitting distinct storage. |
1 class C: 2 def __init__(.x, .y, .z, x): # no explicit self, attributes initialised 3 pass 4 5 def c(): 6 return self.x 7 8 class D(C): 9 def d(): 10 return self.y 11 12 class E(D): 13 def c(): 14 return self.z 15 16 c = C(1, 2, 3, 4) 17 d = D(1, 2, 3, 4) 18 e = E(1, 2, 3, 4) 19 20 print c.c() # 1 21 print d.c() # 1 22 print e.c() # 3 23 print d.d() # 2 24 print e.d() # 2