У меня есть класс, который наследуется от двух других классов, чьи __init__
принимают оба параметра следующим образом:
class A(object):
def __init__(self, a):
self.a = a
class B(object):
def __init__(self, b):
self.b = b
class C(A, B):
def __init__(self, a, b):
super(C, self).__init__(a, b)
c = ClassC(1, 2)
Это дает TypeError: __init__() takes exactly 2 arguments (3 given)
.
При установке b
в B
фиксированного значения и передаче только 1 параметра в super
попытка доступа к b
в C
дает AttributeError: 'ClassC' object has no attribute 'b'
:
class A(object):
def __init__(self, a):
self.a = a
class B(object):
def __init__(self, b):
self.b = 2
class C(A, B):
def __init__(self, a, b):
super(C, self).__init__(a)
print self.a
print self.b
c = ClassC(1, 2)
При вызове __init__
вручную все вроде нормально:
class A(object):
def __init__(self, a):
self.a = a
class B(object):
def __init__(self, b):
self.b = b
class C(A, B):
def __init__(self, a, b):
A.__init__(a)
B.__init__(b)
print self.a
print self.b
c = ClassC(1, 2)
Итак, как я могу получить это наследование прямо и как я могу управлять параметрами для __init__
унаследованных классов при использовании super
? Это вообще возможно? Как super
узнает, какие параметры должны передаваться какому классу?
__init__
методом класса? - person Ashwini Chaudhary   schedule 27.02.2015