Найти - Пользователи
Полная версия: super()
Начало » Python для новичков » super()
1
I159
Разбираюсь в diamond diagram и функции super(). Выполняю пример:

class A:
def __init__(self):
print "A"


class B(A):
def __init__(self):
print "B"
super(B, self).__init__()


class C(A):
def __init__(self):
print "C"
super(C, self).__init__()


class D(B, C):
def __init__(self):
print "D"
super(D, self).__init__()
Импортирую и создаю объект класса. Интерпрететор выдает ошибку:
TypeError: super() argument 1 must be type, not classobj
Поясните пожалуйста, что присходит? Прочтение документации функции super() не привело к полной ясности вопроса.
regall
Потому что super работает только для классов нового стиля, то есть тех, которые наследуются от object.
class A(object):
pass
В вашем случае надо делать так:
class A:
def __init__(self):
print "A"

class B(A):
def __init__(self):
print "B"
B.__init__(self)
I159
Получается super() тут вообще не при чем? Изначально задача была разобраться в super(), помогите пож. простым примером с использованием super().
Soteric
Наследуйте ваш класс A от object, как показал regall.
I159
Ок, понял.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB