Python Standardvererbung?

8

Wenn ich eine Klasse in Python definiere wie:

%Vor%

Von welcher Klasse erbt es? Es scheint nicht von object zu erben.

    
Verhogen 05.02.2011, 09:04
quelle

4 Antworten

11

Wenn Sie eine Klasse definieren und kein bestimmtes Parent deklarieren, wird die Klasse zu einer "classic class", die sich ein wenig anders verhält als "new-style classes", die von object geerbt werden. Weitere Informationen finden Sie hier: Ссылка

Klassische Klassen haben keine gemeinsame Wurzel, also erbt Ihr AClass im Wesentlichen keine Klasse.

Beachten Sie, dass dies spezifisch für Python-Versionen vor 3.0 ist. In Python 3 sind alle Klassen neue Stilklassen und erben implizit von object, wenn kein anderer Elternteil deklariert ist.

    
shang 05.02.2011, 09:08
quelle
8

Probieren Sie das folgende Code-Snippet in Python 2.7 und Python 3.1

aus %Vor%

In Python 2.7 erhalten Sie:

%Vor%

Und Python 3.1 werden Sie bekommen.

%Vor%

Und das erklärt alles. Es ist eine alte Stilklasse in Python 2, es sei denn, Sie unterteilen sie von object . Nur in Python3 wird es standardmäßig wie eine neue Stilklasse behandelt.

    
Senthil Kumaran 05.02.2011 09:53
quelle
2

Lass es uns ausprobieren.

%Vor%

Lesen Sie eine Einführung in die neuen Stilklassen in den Links in anderen Antworten.

    
user225312 05.02.2011 09:46
quelle
2

In Python 2.x oder älter ist Ihr Beispiel AClass eine "Old-Style" -Klasse.

Eine "new-style" -Klasse hat eine definierte Vererbung und muss von einem Objekt oder einer anderen Klasse erben.

Was ist der Unterschied zwischen alten Stil und neuen Stilklassen in Python? ?

EDIT: Wow, ich dachte nicht, dass es möglich ist, die alte Syntax in Python 3.x zu verwenden. Aber ich habe es gerade ausprobiert und diese Syntax funktioniert immer noch. Aber Sie bekommen eine neue Art Klasse.

    
steveha 05.02.2011 09:09
quelle

Tags und Links