v4.1.3
use `dir()` and `getattr()` instead of `__dict__` in order to be compatible with whatever magic modules decide to do to in the future. Although PyQt6 doesn't currently do such magic, PySide6 does (discovered when running similar code to check if there are any aliases PySide6 doesn't define), it does some lazy-loading of the module `__dict__`, so to be a but more future-proof, access module and class attributes in the official way.