Python: klasy pochodne uzyskują dostęp do słownika klasy podstawowej w tej samej lokalizacji pamięci
Zastanawiam się, dlaczego słownik, który jest zdefiniowany w klasie bazowej i jest uzyskiwany z klas pochodnych, jest oczywiście obecny tylko w jednej lokalizacji pamięci. Krótki przykład:
class BaseClass:
_testdict = dict()
_testint = 0
def add_dict_entry(self):
self._testdict["first"] = 1
def increment(self):
self._testint += 1
class Class1(BaseClass):
pass
class Class2(BaseClass):
pass
object1 = Class1()
object2 = Class2()
object1.add_dict_entry()
object1.increment()
print(object2._testdict)
print(object2._testint)
a wyjście to:
{'first': 1}
0
Dlaczego wywołanie „add_dict_entry” obiektu1 wpływa na słownik obiektu2? Używanie liczb całkowitych („przyrost”) nie wpływa na zmienną klasy bazowej.
Wielkie dzięki.
Lorenz