Junior — Middle
Jak se liší mechanismy dědičnosti v programovacích jazycích Python a C#?
sobes.tech AI
Odpověď od AI
V Pythonu a C# mají mechanismy dědičnosti společné rysy, ale také důležité rozdíly:
-
Python:
- Podporuje vícenásobné dědění: třída může dědit od více základních tříd.
- Používá metodu řešení pořadí (MRO, Method Resolution Order) k určení pořadí volání metod při vícenásobném dědění.
- Všechny třídy dědí implicitně od základní třídy
object. - Dědění je dynamické, atributy a metody lze měnit za běhu.
-
C#:
- Podporuje pouze jednoduché dědění: třída může dědit pouze od jedné základní třídy.
- Pro implementaci vícenásobného dědění se používá mechanismus rozhraní: třída může implementovat více rozhraní.
- Dědění je striktně typované a statické.
Příklad vícenásobného dědění v Pythonu:
class A:
def method(self):
print("A")
class B:
def method(self):
print("B")
class C(A, B):
pass
c = C()
c.method() # Vytiskne "A" podle MRO
V C# se to realizuje přes rozhraní:
interface IA { void Method(); }
interface IB { void Method(); }
class C : IA, IB {
public void Method() {
Console.WriteLine("C");
}
}
Tedy hlavní rozdíl je v tom, že Python podporuje vícenásobné dědění tříd přímo, zatímco C# podporuje pouze jednoduché dědění, s vícenásobným děděním přes rozhraní.