__metaclass__... !
__metaclass__, . __metaclass__ . , , __metaclass__ Python , __metaclass__.
, - type, , __metaclass__ , __metaclass__ ( ).
. , ( ), - , , 3 (name, bases, attributes) , 3 , 3 !
Python 2.x:
class A(object):
__metaclass__ = MyMeta
def __init__(self):
pass
, :
attrs = {}
attrs['__metaclass__'] = MyMeta
def __init__(self):
pass
attrs['__init__'] = __init__
A = attrs.get('__metaclass__', type)('A', (object,), attrs)
, , , , type attrs __metaclass__, , type. , , "" __metaclass__ . , , , __metaclass__ , , .
, - , (, , , !), . , __metaclass__.
__dict__, , ; . , - , , __dict__ () , __dict__ ( btw, ). __dict__ - "dictproxy", , dict, dict. type ; , "" ( , ). 2.x vs 3.x ; Python 3 , dictproxy. Python 2.4 ( 2.x, ) dictproxy __dict__.