Python

Overbelasting van operators in Python

Overbelasting van operators in Python
Overbelasting komt overeen met de neiging van een methode of een operator om op meerdere manieren te handelen in de zin van programmeren, op basis van de parameters die worden geleverd aan de techniek of de operanden waarop de operator werkt. Overbelasting van de operator betekent dat een langere betekenis wordt gegeven boven hun vooraf gedefinieerde functionele betekenis.  Python-operators werken voor ingebouwde klassen, maar voor verschillende typen werkt dezelfde operator anders. We zullen in deze handleiding zien hoe we overbelasting van de operator in Python kunnen doen.

De operator + kan bijvoorbeeld twee getallen wiskundig optellen, twee lijsten combineren of tekenreeksen samenvoegen. Hier is een eenvoudig python-programma om een ​​glimp te laten zien van de +-operator die wordt gebruikt voor optellen en aaneenschakelen.

Welnu, wat komt er als we deze operatoren gebruiken voor objecten in a gebruiker gedefinieerde klasse? Laten we het volgende programma nemen dat een plek probeert te simuleren in het 2-D dimensieschema. Hieronder kun je dat al zien omdat Python niet begreep hoe hij 2 coördinateninstanties moest samenvoegen, a Typefout is gegenereerd.

We kunnen deze taak in Python uitvoeren via de overbelasting van de operator, maar laten we eerst de speciale methoden begrijpen.

Speciale magische methoden

Klasse methoden beginnend met de dubbel onderstrepingsteken worden in Python geclassificeerd als speciale methoden of magische functies. De functies die worden gebruikt om specifieke activiteiten uit te voeren. De gebruikelijke methoden die we voor een klasse beschrijven, zijn niet zulke functies. Een van hen zou de __in het_() functie die we hierboven noemden. Elke keer dat we een nieuw object in die klasse bouwen, wordt het genoemd. We zullen onze klasse-compatibel maken met ingebouwde functies via magische functies. In Python zijn er verschillende andere speciale functies.

Binaire of wiskundige operatoren

Hier zijn de details van de magische functies voor het overbelasten van de python binaire of wiskundige operatoren.

Relationele of vergelijkende operators

Hieronder vindt u de details van de magische functies voor het overbelasten van de Python-vergelijking of relationele operators.

Toewijzingsoperators

Hier zijn de details van enkele magische functies voor het overbelasten van de toewijzingsoperators in python-code:.

Nu is het tijd om een ​​glimp op te vangen van een paar voorbeeldcodes wanneer we de hierboven genoemde magische methoden gebruiken en bepaalde operators overbelasten.

Overbelast de binaire of wiskundige operatoren

Voorbeeld 01: Toevoegingsoperator
U zult de moeten afdwingen __toevoegen_() methode in de klas om de . te overbelasten + operator. Grote plicht komt met grote kracht. Binnen deze methode kun je alles doen wat je wilt. Maar het is veel rationeler om de 'coördinaat' object van de coördinatensom.

Toen je c1 + c2 probeerde, noemt Python zijn magie eigenlijk .__add__() methode als c1.__add__(c2) of Coord.__toevoegen__(c1,c2).

Voorbeeld 02: Vermenigvuldigingsoperator
Op dezelfde manier kun je zelfs meerdere binaire operatoren overbelasten met magische functies. In hetzelfde bovenstaande voorbeeld, terwijl we de vermenigvuldigingsoperator overbelasten, krijgen we 2, 6 als ons antwoord op de magische functie.

Voorbeeld 03: Aftrekkingsoperator
Met behulp van de aftrekkingsoperator kregen we we -1, -1 als ons antwoord.

Voorbeeld 04: Power Operator
We hebben de overbelast macht operator tijdens het gebruik van de power magic-functie; wij hebben 1, 8.

Voorbeeld 05: Modulus-operator
Door de modulus-operator te overbelasten, hebben we de __mod__ magische functie om de modulus te krijgen.

U kunt ook de andere wiskundige operatoren gebruiken, e.g., divisie en verdieping divisie operator, voor overbelasting.

Overbelast de vergelijkingsoperators

Python beperkt de overbelasting van operators niet tot alleen binaire of rekenkundige operators. We zijn ook in staat om vergelijkingsoperatoren te overbelasten.

Voorbeeld 01: Minder dan operator
Stel dat we minder nodig hadden dan de '<' symbol in onze 'coördinaat' te implementeren klasse. Laten we de waarde van deze argumenten uit de bron vergelijken en het antwoord geven. Zoals gewoonlijk kan het worden toegepast. We hebben drie objecten en we vergelijken ze in printstatements. Als resultaat krijgen we dat object c1 is minder dan c2, dus het geeft uit waar. Aan de andere kant, c2 en c1 zijn meer uitstekend dan c3; dat is waarom beide False output.

Voorbeeld 02: Niet gelijk aan operator
Nu de . overbelasten Niet gelijk (!=) vergelijkingsoperator, je krijgt waar in het geval van de eerste en tweede printopdracht omdat deze voldoet aan de voorwaarde dat beide objecten niet gelijk zijn. Aan de andere kant levert object 1 hetzelfde op als object 3, dat niet voldoet aan de eis van Niet gelijk. Dat is de reden waarom de derde printopdracht uitvoer niet waar als resultaat.

Voorbeeld 03: Groter dan of gelijk aan operator
Laten we hetzelfde voorbeeld proberen voor het overbelasten van de groter dan of gelijk aan naar operator. In het geval van de eerste afdrukopdracht hebben we: 2 >= 13, wat is? niet waar; daarom levert het False op. In de tweede en derde drukverklaring kregen we 13>=2 en 2>=2, respectievelijk. Beide zijn waar omdat ze voldoen aan de voorwaarde groter dan of gelijk aan.

Probeer de andere vergelijkingsoperatoren, e.g., significanter dan, gelijk aan, 'kleiner dan of gelijk aan' ook in uw code.

Overbelast de toewijzingsoperators

Bekijk een voorbeeld van overbelasting van de toewijzingsoperator. We nemen een soortgelijk voorbeeld met de overbelasting van de '-=' opdracht operator. We hebben twee objecten gedefinieerd met waarden van y- en z-coördinaten. Eerste object c1 geeft zijn waarden door aan 'zelf.jij en 'zelf.z' variabelen, respectievelijk. Aan de andere kant, het object c2 geeft zijn waarden door aan 'andere'.jij en 'andere'.z'.

Voorwerp c1 heeft waarden van zelf.y=1 en zelf.z=1 direct. Het object c2 waarden 'andere.y = -2' en 'andere'.z = -3' is doorgegeven aan afgetrokken van object c1 waarden. Als resultaat, c1 - c2 resultaten zelf.y - andere.y = 1-(-2) en zelf.z - andere.z = 1-(-3). Het berekende resultaat, dat is 3 en 4, is opgeslagen in 'zelf'.x' en 'zelf'.z' vanwege de toewijzingsoperator van '=.' Bij het afdrukken geeft deze code het resultaat van object c1 weer, dat twee variabelen heeft zelf.y = 3 en zelf.z = 4.

Conclusie

We proberen alle operators in uw code te behandelen voor een beter begrip van Operator Overloading.

Installeer de nieuwste Dolphin Emulator voor Gamecube & Wii op Linux
Met de Dolphin Emulator kun je de door jou gekozen Gamecube- en Wii-spellen spelen op Linux Personal Computers (pc). Omdat het een vrij beschikbare e...
Hoe de GameConqueror Cheat Engine in Linux te gebruiken
Het artikel bevat een handleiding over het gebruik van de GameConqueror cheat-engine in Linux. Veel gebruikers die games op Windows spelen, gebruiken ...
Beste gameconsole-emulators voor Linux
Dit artikel bevat een lijst van populaire emulatiesoftware voor gameconsoles die beschikbaar is voor Linux. Emulatie is een softwarecompatibiliteitsla...