Sobes.tech
Junior — Middle

Kuidas erinevad pärimismehhanismid Python ja C# programmeerimiskeeltes?

sobes.tech AI

Vastus AI-lt

Python ja C# mehhanismid päriluses omavad ühiseid omadusi, kuid ka olulisi erinevusi:

  • Python:

    • Toetab mitmekordset pärilust: klass võib pärida mitmest põhiklassist.
    • Kasutab meetodi lahendamise järjekorda (MRO, Method Resolution Order), et määrata päriluse korral meetodite kutsumise järjekord.
    • Kõik klassid pärivad vaikimisi põhiklassist object.
    • Pärilust on dünaamiline, atribuute ja meetodeid saab muuta jooksvalt.
  • C#:

    • Toetab ainult ühekordset pärilust: klass võib pärida ainult ühest põhiklassist.
    • Mitmekordse päriluse realiseerimiseks kasutatakse liideseid: klass võib rakendada mitmeid liideseid.
    • Pärilust on rangelt tüübitud ja statiline.

Python näide mitmekordse päriluse kohta:

class A:
    def method(self):
        print("A")

class B:
    def method(self):
        print("B")

class C(A, B):
    pass

c = C()
 c.method()  # Väljund "A" vastavalt MRO-le

C#-s realiseeritakse see liideste kaudu:

interface IA { void Method(); }
interface IB { void Method(); }

class C : IA, IB {
    public void Method() {
        Console.WriteLine("C");
    }
}

Seega, peamine erinevus on see, et Python toetab otse mitmekordset klassipärilust, samas kui C# toetab ainult ühekordset, kuid mitmekordset pärilust saab saavutada liideste kaudu.