Skip to content

Instantly share code, notes, and snippets.

@alvesjnr
Created May 22, 2012 14:59
Show Gist options
  • Save alvesjnr/2769610 to your computer and use it in GitHub Desktop.
Save alvesjnr/2769610 to your computer and use it in GitHub Desktop.
Simple example of metaclass usage in Python
" Python 2 version "
class MyMetaclass(type):
def __new__(cls, name, bases, dct):
attrs = ((name, value) for name, value in dct.items() if not name.startswith('__'))
attrs = dict(("__" + name.upper(), value) for name, value in attrs)
return super(MyMetaclass, cls).__new__(cls, name, bases, attrs)
class BaseClass(object):
__metaclass__ = MyMetaclass
class Banana(BaseClass):
v = 10
if __name__ == '__main__':
kk = Banana()
try:
print "kk.v is: %s" % kk.v
except AttributeError:
print "There is not a 'kk.v' here"
" Python 3 version "
class MyMetaclass(type):
def __new__(cls, name, bases, dct):
attrs = ((name, value) for name, value in dct.items() if not name.startswith('__'))
attrs = dict(("__" + name.upper(), value) for name, value in attrs)
return super(MyMetaclass, cls).__new__(cls, name, bases, attrs)
class BaseClass(object, metaclass=MyMetaclass):
pass
class Banana(BaseClass):
v = 10
if __name__ == '__main__':
kk = Banana()
try:
print("kk.v is: ",kk.v)
except AttributeError:
print("There is not a 'kk.v' here")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment