class_docstr: Extended dictionary accessible with dot notation.
  
  >>> ad = AttributeDict({'key1': 1, 'key2': 'abc'})
  >>> ad.key1
  1
  >>> ad.update({'my-key': 3.14})
  >>> ad.update(new_key=42)
  >>> ad.key1 = 2
  >>> ad
  "key1":    2
  "key2":    abc
  "my-key":  3.14
  "new_key": 42
class_docstr_tok: ["Extended","dictionary","accessible","with","dot","notation",".",">",">",">","ad","=","AttributeDict","(","{","'key1","'",":","1",",","'key2","'",":","'abc","'","}",")",">",">",">","ad.key1","1",">",">",">","ad.update","(","{","'my-key","'",":","3.14","}",")",">",">",">","ad.update","(","new_key=42",")",">",">",">","ad.key1","=","2",">",">",">","ad","''","key1","''",":","2","''","key2","''",":","abc","''","my-key","''",":","3.14","''","new_key","''",":","42"]
code: def __setattr__(self, key: str, val: Any) -> None:
      self[key] = val
  
imports: from typing import Any, Dict, Optional
label_desc: Use image node_id 2 for calling the AttributeDict obj's underlying member method code with example usage: obj.__setattr__(key, val) without return types