çalışır. child
yapıcısı İçinde defalarca parent
tanımlanan üye işlev foo()
arayarak list
tipi üye değişkeni xs
başlatılıyor ediyorum. Ben açıkça döngü ve foo()
tarafından döndürülen her değeri ekleyerek xs
başlatmak eğer, her şey gayet iyi çalışıyor olduğu ortaya çıkar. Bir liste anlayışı içinde aynı şeyi yapmak çalışırsanız çocuğun in başlatıcısı liste anlama ebeveynin yöntemini çağırın alamazsın ama açık döngü <code>child</code> sınıf <code>parent</code> sınıftan miras
nasıl çalışır kodu için MWE:
class parent(object):
def __init__(self):
self.x = 5
def foo(self, a):
return self.x
class child(parent):
def __init__(self):
super().__init__()
self.xs = []
for i in range(9):
self.xs.append(super().foo(i))
mychild = child()
child
ait ancak liste anlayışı ile tanımı:
class child(parent):
def __init__(self):
super().__init__()
self.xs = [super().foo(i) for i in range(9)]
hata söz konusu:
% python test.py
Traceback (most recent call last):
File "test.py", line 20, in <module>
mychild = child()
File "test.py", line 17, in __init__
self.xs = [super().foo(i) for i in range(9)]
File "test.py", line 17, in <listcomp>
self.xs = [super().foo(i) for i in range(9)]
TypeError: super(type, obj): obj must be an instance or subtype of type
zsh: exit 1 python test.py