出于某种原因, super()方法并不总是按预期行事,select返回: TypeError('super(type, obj): obj must be an instance or subtype of type)' 我明白错误的含义 。 我不明白为什么它会出现错误。 以下是正在破解的代码片段。 系统中的所有对象都是新的样式对象。 真正有趣的是这个错误并不总是显示出来。 我不知道是什么原因造成的。 Retrieval的super()方法传递Retrieval类,然后将其本身作为一个对象,就我所知,它应该是如何调用super() 。 任何想法呢? 在文件DBConnection.py中 : class DBAdminConnection(object): def __init__(self): self.user = DBUserConnection().user self.submissions = DBSubmissionConnection() 在文件Retrieval.py中 class Retrieval(DBConnection.DBAdminConnection): def __init__(self, username=None, password=None, unique_key=None): super(Retrieval,self).__init__() if username and password: self.username = username self.user.login(username,password, config.DATABASE) if self.user.error: […]
在Python 3.x中,可以不带参数地调用super() : class A(object): def x(self): print("Hey now") class B(A): def x(self): super().x() >>> B().x() Hey now 为了使这个工作,一些编译时魔术被执行,其中一个结果是,下面的代码( super super_重新super_ )失败: super_ = super class A(object): def x(self): print("No flipping") class B(A): def x(self): super_().x() >>> B().x() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in x […]