Skip to content

Instantly share code, notes, and snippets.

@arsatiki
arsatiki / gist:66262
Created February 18, 2009 08:52
Do not use functions as metaclasses. It makes inheritance super-painful.
# class Foo(object):
# ...
# is syntactic sugar for
# Foo = type('Foo', (object,), {...})
# And with a metaclass Meta:
# Bar = Meta('Bar', (object,), {...})
def metafunc(name, bases, dict):
print "I created a new class %s%s from %s" % (name, bases, dict)
return type(name, bases, dict)
class Additive(type):
def __add__(self, x):
return type("Additive", (self, x), {})
class A(object):
__metaclass__ = Additive
def foo(self):
print "foo"
class B(object):