1818# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1919# IN THE SOFTWARE.
2020
21- import copy
2221from typing import Any
2322
2423
@@ -29,18 +28,22 @@ class _AssociatedDataStore(dict):
2928 def set_default (cls , name : str , value : Any ):
3029 cls ._defaults [name ] = value
3130
31+ def get (self , key : Any , default : Any = None ) -> Any :
32+ if key in self .keys ():
33+ return self [key ]
34+ if key in self .__class__ ._defaults :
35+ return self .__class__ ._defaults [key ]
36+ return default
37+
3238 def __getattr__ (self , name : str ) -> Any :
33- if name in self .__dict__ :
34- return self .__dict__ [name ]
35- if name not in self :
36- if name in self .__class__ ._defaults :
37- result = copy .copy (self .__class__ ._defaults [name ])
38- self [name ] = result
39- return result
39+ if name in self .keys ():
40+ return self [name ]
41+ if name in self .__class__ ._defaults :
42+ return self .__class__ ._defaults [name ]
4043 return self .__getitem__ (name )
4144
42- def __setattr__ (self , name : str , value : Any ):
45+ def __setattr__ (self , name : str , value : Any ) -> None :
4346 self .__setitem__ (name , value )
4447
45- def __delattr__ (self , name : str ):
48+ def __delattr__ (self , name : str ) -> None :
4649 self .__delitem__ (name )
0 commit comments