Существует SO-поток super (type, obj): obj должен быть экземпляром или подтипом типа , ответы на которые приводят множество случаев, которые будут вызывать проблемы, такие же, как у вас.
После того, как я искал исходные коды Azure/azure-event-hubs-python
и Azure/azure-uamqp-python
, я думаю, что ваша проблема была вызвана кодом ниже в uamqp/client.py#L470
, которые связанык ответу из ветки SO над сообщением @ Eldamir.
super(SendClient, self).__init__(
target,
auth=auth,
client_name=client_name,
debug=debug,
error_policy=error_policy,
keep_alive_interval=keep_alive_interval,
**kwargs)
Другой интересный способ - если слияние ветвей дублирует класс, так что в файле есть два определения длято же имя, например
class A(Foo):
def __init__(self):
super(A, self).__init__()
#...
class A(Foo):
def __init__(self):
super(A, self).__init__()
#...
Если вы попытаетесь создать экземпляр из статической ссылки на первое определение A, как только он попытается вызвать super, внутри метода init , Aбудет ссылаться на второе определение A, поскольку оно было перезаписано.Решение, конечно же, состоит в том, чтобы удалить дублирующееся определение класса, чтобы оно не перезаписывалось.
Может показаться, что это никогда не произойдет, но это случилось со мной, когда я не былуделяя достаточно внимания слиянию двух ветвей.Мои тесты провалились с сообщением об ошибке, описанным в вопросе, поэтому я решил оставить свои выводы здесь, даже если он не совсем отвечает на конкретный вопрос.
Так что, я думаю, что былоопределенный вами класс SendClient
, который вызывает конфликт имен с SendClient
классом в uamqp/client.py
.