There are various terms for the same concept
– registry — generic concept across languages. A class has a registry and an instance has a registry too.
– namespace — has special meaning in python, but some veterans say the various registries are implemented same as a namespace
2 types of dictionaries in python —
A) user dictionary are dictionaries you create
B) “idic” meaning “internal dict” is a building block of python objects, (possibly) including user dictionary objects.
A user dict is usually taught as an object with methods and fields. I hope that’s not over simplification.
A namespace for a module, or class or anything is implemented as an idic. Accessed as whatever.__dict__. In a twist for consistency and coherence, this idic can be *used* as a regular user dictionary. You can do whatever.__dict__.keys(). You may rightly feel that a __dict__ is implemented the same as a user dictionary, but I doubt it.
Even if a __dict__ is implemented the same way as a user dict, I strongly believe beginners better treat them as 2 distinct things unrelated to each other, though the syntax looks similar.
Internal dict is the basis of python objects. I guess a idic is more like a small expandable hash table . Must be small because a *concrete* idic instance exists in EVERY parent class, subclass, and EVERY instance of EVERY class.
 It’s not too wrong to say it resembles the C struct.
 a perl object IS nothing but a hashtable or associative array. See the camel book. In php, an object is implemented as an associative array (or simply an “array”).
 at least user defined objects