Apropos alte und neue Klassen in Python

Selbst wenn Sie es länger als 5 Jahre verwenden, ist es ein Süßigkeitenball für Python-Anfänger

Es gibt also eine solche Beschreibung in einem bestimmten Buch

class SomeClass(object):
  ..

Ich habe mich gefragt, was dieses "Objekt" ist, also machen Sie sich eine Notiz.

Python class inherits object(Stack Overflow)

In der Python2-Serie gibt es zwei Arten von Klassen. Wenn Sie nicht neuer sind, erhalten Sie viele Informationen zu Typen. Python3 ist nur neu, daher scheint es eines der aussterbenden Wissen zu sein.

Nun, ich werde es versuchen. Es gibt auch Liebe, die aus den Ergebnissen hervorgeht

class_exp.py


class OldClass:
  def a(self):
    print("I'm OldClass")

class OldChild(OldClass):
  def a(self):
    super(OldChild, self).a()

class NewClass(object):
  def a(self):
    print("I'm NewClass")

class NewChild(NewClass):
  def a(self):
    super(NewChild, self).a()

x = OldChild()
y = NewChild()
print(type(x))
print(type(y))
print('--')
try:
  # Will fail with Python 2.x
  x.a() 
except TypeError as e:
  import traceback
  traceback.print_exc()
print('--')
y.a()
> python2.7 misc/class_exp.py
<type 'instance'>
<class '__main__.NewChild'>
--
Traceback (most recent call last):
  File "misc/class_exp.py", line 27, in <module>
    x.a()
  File "misc/class_exp.py", line 10, in a
    super(OldChild, self).a()
TypeError: must be type, not classobj
--
I'm NewClass

> python3.2 misc/class_exp.py
<class '__main__.OldChild'>
<class '__main__.NewChild'>
--
I'm OldClass
--
I'm NewClass

In Python2 sehen die Objekte der älteren Klasse nicht wie erwartet aus. Es scheint einen Punkt in dem Punkt zu geben, an dem das Ergebnis von type (obj) "<type'instance"> "ist. Das ist die Beziehung, ich kann die Elternklasse mit super () nicht richtig sehen.

Dann lesen Sie die alte Dokumentation.

(2 PEPs 252 and 253: Type and Class Changes)[http://docs.python.org/release/2.2.3/whatsnew/sect-rellinks.html]

Das Buch am Anfang ist übrigens ein Buch, das sich auf Python3 konzentriert, daher bin ich mir nicht sicher, warum ich explizit Objekte angegeben habe, die in Python3 nicht benötigt werden.

Recommended Posts

Apropos alte und neue Klassen in Python
[Python] Über Executor und zukünftige Klassen
Apropos Python-Klassenattribute und Metaklassen
Über Python, len () und randint ()
Informationen zu Python-Datums- und Zeitzone
Über Python und reguläre Ausdrücke
Informationen zu Python- und Betriebssystemoperationen
Python # Über Referenz und Kopie
Über Python sort () und reverse ()
Informationen zur Installation der Serien Pwntools und Python2
ABC für Python-Abstract-Klassen und Ententypisierung
Python: Ein Hinweis zu Klasse 1 "Abstract"
Über Python-Diktat und sortierte Funktionen
Über Python und Cython dtype
Über Python Pickle (cPickle) und Marschall
Über Python, aus und importieren, als
Python-Klassen und -Instanzen, Instanzmethoden
Über _ und __
Binden Sie Methoden an Python-Klassen und -Instanzen
Eine Geschichte über Python Pop und Append
Über Python-Slices
Über die Einschlussnotation von Python
[Einführung in Python3 Tag 12] Kapitel 6 Objekte und Klassen (6.3-6.15)
Über Python tqdm.
Über die Python-Ausbeute
Über Python, Klasse
Wie Python-Klassen und magische Methoden funktionieren.
Denken Sie an Suchvorgänge mit Tiefenpriorität und Breitenpriorität in Python
Über den Unterschied zwischen "==" und "is" in Python
Informationen zur Python-Vererbung
[Einführung in Python3 Tag 11] Kapitel 6 Objekte und Klassen (6.1-6.2)
Über Python, range ()
[Hikari-Python] Kapitel 09-02 Klassen (Erstellen und Instanziieren von Klassen)
Über Python Decorator
Informationen zur Python-Referenz
Über Python-Dekorateure
Eine Geschichte über das Ändern von Python und das Hinzufügen von Funktionen
[Python] Erfahren Sie mehr über asynchrone Programmierung und Ereignisschleifen
[Python] Über Multi-Prozess
Über flache und tiefe Kopien von Python / Ruby
Erste Schritte mit Python3 # 2 Erfahren Sie mehr über Typen und Variablen
Informationen zum Erstellen und Ändern von benutzerdefinierten Designs für Python IDLE
[Python] Kapitel 01-02 Über Python (Ausführung und Installation der Entwicklungsumgebung)
[Python] Komprimieren und dekomprimieren
Über Klasse und Instanz
Über Funktionsargumente (Python)
Python Iterator und Generator
Python-Pakete und -Module
Vue-Cli- und Python-Integration
[Python] Memo über Funktionen
Python-Klassen sind langsam
Ruby, Python und Map
Zusammenfassung über Python3 + OpenCV3
Über Cumprod und Cummax
Über Python für ~ (Bereich)
Python-Eingabe und Ausgabe
[Python] Memo Über Fehler
Informationen zur Python-Entwicklungsumgebung
Python: Über Funktionsargumente