class A (object) :
"""A simple class with some internal default values"""
def __init__ (self, x) :
self.x = x
self._a = 1000
self._b = 10000
self._data = [1,2,3,4]
self._d = { 1 :1, 2:2, 3:3}
class A_Metaclass (type) :
"""Metaclass setting default values"""
def __init__ (cls, name, bases, dct) :
super(A_Metaclass, cls).__init__(name, bases, dct)
setattr (cls, "_a", 1000)
setattr (cls, "_b", 10000)
setattr (cls, "_data", [1,2,3,4])
setattr (cls, "_d", { 1 :1, 2:2, 3:3})
class A_With_Metaclass (object) :
"""The same class as A, but internal default values set by metaclass"""
__metaclass__ = A_Metaclass
def __init__ (self, x) :
self.x = x
from timeit import timeit
n = 10000000
print "metaclass :", timeit ("A_With_Metaclass (22)", setup = "from __main__ import A_Metaclass, A_With_Metaclass", number = n)
print "normal :", timeit ("A (22)", setup = "from __main__ import A", number = n)