Das ist auch natürlich ... Wenn Sie jedoch nicht aufpassen, denken Sie vielleicht "das?" Stellen Sie sich zum Beispiel eine Klasse wie diese vor.
class A:
prop1 = 123
prop2 = prop1
def hoge(self):
return 'superhoge'
fuga = hoge
class SubA(A):
prop1 = 777
def hoge(self):
return 'hoge'
Wenn Sie ein SubA-Objekt erstellen, sehen hoge () und prop1 natürlich so aus.
>>> a = SubA()
>>> print(a.hoge())
hoge
>>> print(a.prop1)
777
Was ist übrigens mit Prop2 und Fuga? Da sie sich auf prop1 bzw. hoge beziehen, scheint es, dass das gleiche Ergebnis erzielt wird, wenn sie überschrieben werden. Dies ist jedoch tatsächlich der Fall.
>>> a = SubA()
>>> print(a.fuga())
superhoge
>>> print(a.prop2)
123
Daraus können wir ersehen, dass sich prop2 und fuga auf die Definition der übergeordneten Klasse beziehen. Als objektorientierter Mechanismus wird häufig der Ausdruck "Mit untergeordneter Klasse überschreiben" verwendet, der jedoch falsch ist. Ich denke, Sie sollten vorsichtig sein, wie Sie Wörter verwenden.