In [153]: class test(object):
...: def __init__(self, a, b):
...: self._cont = {}
...: self.a = a
...: self.b = b
...: #self._cont = {}
...: def __setattr__(self, name, value):
...: print(name)
...: if isinstance(value, int):
...: self._cont[name] = value
...:
...: object.__setattr__(self, name, value)
...:
In [154]: x = test(10,20)
_cont
a
b
In [155]: x.__dict__
Out[155]: {'_cont': {'a': 10, 'b': 20}, 'a': 10, 'b': 20}
In [156]: test.__dict__
Out[156]:
dict_proxy({'__dict__': <attribute '__dict__' of 'test' objects>,
'__doc__': None,
'__init__': <function __main__.__init__>,
'__module__': '__main__',
'__setattr__': <function __main__.__setattr__>,
'__weakref__': <attribute '__weakref__' of 'test' objects>})
In [157]:
In [157]: class test(object):
...: def __init__(self, a, b):
...: self._cont = {}
...: self.a = a
...: self.b = b
...: #self._cont = {}
...: def __setattr__(self, name, value):
...: print(name)
...: if isinstance(value, int):
...: self._cont[name] = value
...: else:
...: object.__setattr__(self, name, value)
...:
In [158]: x = test(10,20)
_cont
a
b
In [159]: x.__dict__
Out[159]: {'_cont': {'a': 10, 'b': 20}}
In [160]: x
Out[160]: <__main__.test at 0x7f6bebac70d0>
In [161]: x.c = 10
c
In [162]: x.__dict__
Out[162]: {'_cont': {'a': 10, 'b': 20, 'c': 10}}
In [183]: class test(object):
...: def __init__(self, a, b):
...: self._cont = {}
...: self.a = a
...: self.b = b
...: #self._cont = {}
...: def __setattr__(self, name, value):
...: print(name)
...: if isinstance(value, int):
...: self._cont[name] = value
...: else:
...: object.__setattr__(self, name, value)
...: def __getattr__(self, name):
...: print(name)
...: print self._cont[name]
...:
...:
...:
In [184]: x = test(10,20)
_cont
a
b
In [185]: x._cont
Out[185]: {'a': 10, 'b': 20}
In [186]: x.a
a
10
In [187]: x.b
b
20
In [188]: