Ненадежное поведение super() в Python

По какой-то причине метод super()не всегда ведет себя так, как ожидалось, выбирая вернуть:

TypeError('super(type, obj): obj must be an instance or subtype of type)'

Я понимаю, что означает ошибка . Я не понимаю, почему это появляется как ошибка. Вот фрагмент кода, который ломается. Все объекты в системе являются объектами нового стиля.

Что действительно интересно, так это то, что эта ошибка появляется не всегда. Я не знаю, чем это вызвано. Метод super()в Retrievalпередает класс 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
41
задан Ethan Furman 15 March 2012 в 15:15
поделиться