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.