Sobes.tech
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í.