【发布时间】:2012-04-01 02:45:57
【问题描述】:
由于某种原因,super() 方法并不总是按预期运行,选择返回:
TypeError('super(type, obj): obj must be an instance or subtype of type)'
我了解错误的含义。我不明白为什么它会出现错误。这是正在破坏的代码的 sn-p。系统中的所有对象都是新样式对象。
真正有趣的是,这个错误并不总是出现。我不知道是什么原因造成的。 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:
raise UserLoginError(username)
self.unique_key = unique_key
【问题讨论】:
标签: python inheritance superclass super