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

questionAnswers(2)

yourAnswerToTheQuestion