text: Title: [BUG] print does not work well with DefaultDict
  Body: - [x] I've checked [docs](https://rich.readthedocs.io/en/latest/introduction.html) and [closed issues](https://github.com/Textualize/rich/issues?q=is%3Aissue+is%3Aclosed) for possible solutions.
  - [x] I can't find my issue in the [FAQ](https://github.com/Textualize/rich/blob/master/FAQ.md).
  
  **Describe the bug**
  
  `rich.print` inspects `__rich__` and `aihwerij235234ljsdnp34ksodfipwoe234234jlskjdf` of object during printing. 
  
  However, it does not inspect if the `__getattr__` of object will always returns something. 
  
  `ipython` avoids this behaviour by checking `_ipython_canary_method_should_not_exist_` before inspecting the object. 
  
  ```python
  from chanfig import Config
  from rich import print as pprint
  
  
  if __name__ == '__main__':
      config = Config(**{'hello': 'world'})
      print('print', config)
      pprint('rich.print', config)
      print(config.__rich__)
      print(config.keys())
  ```
  
  ```bash
  rint Config(<class 'chanfig.config.Config'>,
    ('hello'): 'world'
  )
  rich.print Config(<class 'chanfig.config.Config'>,
    ('hello'): 'world'
    ('__rich__'): Config(<class 'chanfig.config.Config'>, )
    ('aihwerij235234ljsdnp34ksodfipwoe234234jlskjdf'): Config(<class 'chanfig.config.Config'>, )
  )
  Config(<class 'chanfig.config.Config'>, )
  dict_keys(['hello', '__rich__', 'aihwerij235234ljsdnp34ksodfipwoe234234jlskjdf'])
  ```
  
  ref: https://github.com/ZhiyuanChen/CHANfiG/issues/6
  