[Python-Dev] Classes and Metaclasses in Smalltalk (original) (raw)

Thomas Heller thomas.heller@ion-tof.com
Wed, 2 May 2001 16:53:17 +0200


This implementation of super works correctly:

import new

class super: def init(self, instance, klass): self.instance = instance self.klass = klass def getattr(self, name): for klass in (self.klass,) + self.klass.bases: member = getattr(klass, name, None) if member: if callable(member): return new.instancemethod(member, self.instance, klass) return member raise AttributeError(name)

class X: def test(self): print "test X"

class Y(X): def test(self): print "test Y" super(self, X).test()

class Z(Y): pass

X().test() print Y().test() print Z().test() print

Thomas