Форум сайта python.su
Разбираюсь в 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() не привело к полной ясности вопроса.
Отредактировано (Апрель 10, 2011 14:57:48)
Офлайн
Потому что super работает только для классов нового стиля, то есть тех, которые наследуются от object.
class A(object):
pass
class A:
def __init__(self):
print "A"
class B(A):
def __init__(self):
print "B"
B.__init__(self)
Офлайн
Получается super() тут вообще не при чем? Изначально задача была разобраться в super(), помогите пож. простым примером с использованием super().
Офлайн
Наследуйте ваш класс A от object, как показал regall.
Офлайн
Ок, понял.
Офлайн