| 536 | # Automatically add __super to the class |
| 537 | # This trick only works for dynamic classes |
| 538 | def __new__(metaclass, name, bases, dict): |
| 539 | cls = super(autosuper, metaclass).__new__(metaclass, |
| 540 | name, bases, dict) |
| 541 | # Name mangling for __super removes leading underscores |
| 542 | while name[:1] == "_": |
| 543 | name = name[1:] |
| 544 | if name: |
| 545 | name = "_%s__super" % name |
| 546 | else: |
| 547 | name = "__super" |
| 548 | setattr(cls, name, super(cls)) |
| 549 | return cls |
| 550 | class A(metaclass=autosuper): |
| 551 | def meth(self): |
| 552 | return "A" |