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 ~~.
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