由于某些原因,super()
方法并不总是按预期运行,选择返回:
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:
raise UserLoginError(username)
self.unique_key = unique_key
%load_ext autoreload%autoreload 2
类。 - P.R.