__metaclass__ を使って __call__ で属性を初期化すると、readonly にできる?
class _H(type):
def __call__(self, *args, **kw):
for key, value in kw.items():
setattr(self, key, value)
return type.__call__(self, *args, **kw)
class A(object):
__metaclass__ = _H
a = A(a=1, a=2)
a.a = 3