Unë kam dy klasa bazë A
dhe B
secila prej tyre kanë një metodë myfunc
, e cila printon një karakter të ndryshëm.
class A:
def myfunc(self):
print('A')
class B:
def myfunc(self):
print('B')
Unë kam edhe një class C
që trashëgon nga A
dhe B
të dyja. Në class C
kam anashkaluar myfunc
dhe kam thirrur super
mbi të.
class C(B, A):
def myfunc(self):
super().myfunc()
Tani nëse ekzekutoj kodin e mëposhtëm, ai printon vetëm një karakter
x = C()
x.myfunc()
Prodhimi:
B
Provova print(C.__mro__)
që më jep (<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>)
Kështu që duhet të shkojë te class A
dhe të printojë gjithashtu karakterin A
. drejtë?
Gjithashtu, nëse ndërroj rendin e trashëgimisë si C(A,B)
dhe përdor të njëjtin kod , ai kapërcen class B
.
Pyetjet e mia:
- Pse po kalon
class A
? - Si të ekzekutoni metodën
myfunc
në të dy klasatA
dheB
Kërkova diskutim të ngjashëm por e pashë konfuz.