Add early binding of methods to the 2nd metaclass example.

This commit is contained in:
Guido van Rossum 2001-08-17 11:55:58 +00:00
parent 309b566704
commit 7e1ff69271
1 changed files with 6 additions and 1 deletions

View File

@ -404,7 +404,11 @@ def metaclass():
__new__ = staticmethod(__new__)
def __call__(self):
it = _instance()
# XXX Should do more, but that doesn't work yet
# Early binding of methods
for key in self.dict:
if key.startswith("__"):
continue
setattr(it, key, self.dict[key].__get__(it, self))
return it
class C:
__metaclass__ = M2
@ -414,6 +418,7 @@ def metaclass():
verify(C.bases == ())
verify('spam' in C.dict)
c = C()
verify(c.spam() == 42)
def pymods():
if verbose: print "Testing Python subclass of module..."