Es war eine schmerzhafte Erinnerung, als mir TypeError gesagt wurde: Muss type sein, nicht class obj, wenn versucht wird, mit Python zu erben

Ich habe versucht, mit Python und Init mit Super zu erben, aber TypeError: must be type, not classobj Erinnerungen, als es schwer zu sagen war

Erstens die Python-Version

shell


$ python -V
Python 2.7.10

Ich habe versucht, eine andere Klasse zu erstellen, indem ich die folgende Klasse geerbt habe. Vererbungsklasse

hogehoge.py


class Client():
    def __init__(self, url, **kwargs):

Vererbungsklasse

manager.py


import hogehoge

class Manager(hogehoge.Client):
    def __init__(self, url, *kwargs):
        super(Manager,self).__init__(url, *kwargs)

Versuchen Sie es mit

shell


$ python
>>> import manager
>>> cl = manager.Manager("https://example.jp")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "manager.py", line 10, in __init__
    super(Manager,self).__init__(url, *kwargs)
TypeError: must be type, not classobj

Ich habe es nicht verstanden, auch wenn ich gegoogelt habe.

Der Stapelüberlauf, zu dem ich schließlich gekommen bin, ist wie folgt.

python - super() raises "TypeError: must be type, not classobj" for new-style class - Stack Overflow http://stackoverflow.com/questions/9698614/super-raises-typeerror-must-be-type-not-classobj-for-new-style-class

?? ?? Gibt es neue und alte Objekte? ?? Unten finden Sie die Beziehung zwischen Python-Typen und -Klassen

Beziehung zwischen Python-Typen und Klassen - Paisonnikki http://pydiary.bitbucket.org/blog/html/2013/10/12/type.html

Es gibt zwei Arten von Klassen in Python ~~ -Objekten ~~.

  1. classobj
  2. type

Die von hogehoge.py oben erstellte Instanz ist eine alte classobj und kein Typ, daher kann sie nicht super sein. Scheint ein Fehler zu sein.

Die Lösung ist unten. ~~ Liest die übergeordnete Klasse als Objekt in der geerbten Klasse ~~ Mehrfachvererbung von Client und Objekt Vielen Dank, dass Sie @shiracamus.

manager.py


import hogehoge

class Manager(hogehoge.Client, object):
    def __init__(self, url, *kwargs):
        super(Manager,self).__init__(url, *kwargs)

Ich bin neu in Python. Bitte weisen Sie auf Fehler hin.

Recommended Posts

Es war eine schmerzhafte Erinnerung, als mir TypeError gesagt wurde: Muss type sein, nicht class obj, wenn versucht wird, mit Python zu erben
Ich erhalte einen UnicodeDecodeError, wenn ich versuche, mit Python sqlalchemy eine Verbindung zu Oracle herzustellen
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden
Ein Memorandum beim automatischen Erwerb mit Selen
Ein Hinweis, dem ich beim Erstellen einer Tabelle mit SQL Alchemy verfallen war
[Python] Erbt eine Klasse mit Klassenvariablen
[Python] Als ich versuchte, ein Dekomprimierungswerkzeug mit einer Zip-Datei zu erstellen, die ich gerade kannte, war ich süchtig nach sys.exit ()
Als ich versuchte, Python auszuführen, wurde ich zum Microsoft Store übersprungen
Eine Geschichte, die ich süchtig danach war, eine Video-URL mit Tweepy zu bekommen
Verwenden Sie Python aus Java mit Jython. Ich war auch süchtig danach.
[Python] Es war sehr praktisch, die Python-Klasse für das ROS-Programm zu verwenden.
Ich war süchtig danach, Cython mit PyCharm auszuprobieren, also machen Sie sich eine Notiz
Als ich in IPython versuchte, den Wert zu sehen, war es ein Generator, also kam ich auf ihn, als ich frustriert war.
[Python] Umgang mit dem is-Instanzfehler "is instance () arg 2 muss ein Typ oder ein Tupel von Typen sein"
Als ich eine Baumkarte (Flächendiagramm) mit Python erstellt habe, war sie subtil. Wenn ich also Schnörkel verwendete, fühlte es sich ziemlich gut an.
Als ich versuchte, eine VPC mit AWS CDK zu erstellen, konnte ich es aber nicht schaffen
Was tun, wenn bei Verwendung von strptime "TypeError: muss Zeichenfolge sein, nicht int ..." angezeigt wird
Drei Dinge, von denen ich süchtig war, als ich Python und MySQL mit Docker verwendete
Ich konnte AWS-Batch mit Python, Moto verspotten, also werde ich es verlassen
Python 3-Migration> TypeError: muss eine reelle Zahl sein, keine Kartenunterstützung> ändere map () in list (map ())
Ich habe versucht, ein Projekt mit Python on Docker mit PyCharm zu erstellen, aber es hat mit Docker Compose funktioniert
Ich möchte mit Python in eine Datei schreiben
Ich habe versucht, automatisch die Zeichenfolge zu generieren, die mit Python in Mr. Adjustment eingegeben werden soll
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
Was ich getan habe, als ich wütend war, es mit der Option enable-shared einzufügen
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
Ein Anfänger versuchte, eine Strichzeichnung mit einem Kettenmesser zu färben. Ich konnte es schaffen.
Was tun, wenn in GAE "Typfehler: muss _socket.socket sein, nicht Socket" angezeigt wird
[Go language] Seien Sie vorsichtig, wenn Sie einen Server mit mux + cors + alice erstellen. Besonders darüber, wovon ich in Bezug auf CORS süchtig war.
Beim Schreiben in eine CSV-Datei mit Python habe ich einen kleinen Fehler gemacht und den Liefertermin nicht eingehalten
Ich habe eine Klasse geschrieben, die das Schreiben erleichtert, indem ich die Teiltexte spezifiziere, wenn ich Mecab mit Python verwende
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte mit einem Roboter in Python arbeiten.
Python: Kann in Lambda wiederholt werden
Wovon ich süchtig war, als ich Python Tornado benutzte
Ich möchte einen Quantencomputer mit Python betreiben
Als ich versuchte, PIL und matplotlib in einer virtuellen Umgebung zu installieren, war ich süchtig danach.
Ich habe eine Klasse erstellt, um das Analyseergebnis von MeCab in ndarray mit Python zu erhalten
Ich war überrascht, eine nette Rezension zu erhalten, als ich Python an CheckIO und seine Erklärung schrieb
Wovon ich süchtig war, als ich mit riesigen Dateien in einer Linux 32-Bit-Umgebung umging
Da es Doppelgenger gab, habe ich versucht, es mit künstlicher Intelligenz zu unterscheiden (lacht) (Teil 2)
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
[Hinweis] Eine Geschichte über den Versuch, eine Klassenmethode mit zwei Unterbalken in der Python 3-Serie zu überschreiben.
Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert
Da es Doppelgenger gab, habe ich versucht, es mit künstlicher Intelligenz zu unterscheiden (lacht) (Teil 1)
Ich möchte ausgeben, während der Wert des Typs (z. B. datetime) konvertiert wird, der bei der Ausgabe von json mit Python nicht unterstützt wird