In Python 3.12, the hash table is no longer represented with a full dictionary. This means that if you access an attribute, having the full hash table is not really needed. So instead of storing the same names in the dictionary of every instance, we put those names in the class because they are going to be common. Now calling danderedix computes stuff on the fly and gives it to you like raw pointers.