I tried to use for loop in a recursive function to find all path that the child class related to its parents.
class A:
pass
class B(A):
pass
class C(A):
pass
class F(A):
pass
class L(C,B):
pass
class D(B,F):
pass
class M(L,D):
pass
def bases(cls):
if cls == object:
return [object]
for Class in cls.__bases__:
return [cls] + bases(Class)
print(bases(M))
# the output should be this:
# [[M, L, C, A], [M, L, B, A], [M, D, B, A], [M, D, F, A]]
but the output is [M, L, C, A] . keyword Return didn't allow For Loop to do well . then I wrote the code like this:
for Class in cls.__bases__:
path = [cls] + bases(Class)
return path
and the output would be [M, D, F, A] . I replaced return with yield but it didn't work and I get error:
TypeError: can only concatenate list (not "generator") to list
what can I do to solve this problem???