Python Magic metoder er metoderne, der starter og slutter med dobbelt understregning '__'. De er defineret af indbyggede klasser i Python og almindeligvis brugt til operatøroverbelastning.
De kaldes også Dunder metoder, Dunder betyder her Double Under (Understregninger).
Python magiske metoder
Indbyggede klasser definerer mange magiske metoder, du() funktion kan vise dig magiske metoder, der er arvet af en klasse.
Eksempel:
Denne kode viser de magiske metoder, der er arvet af int klasse.
Python3
# code> print>(>dir>(>int>))> |
>
>Produktion
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>
Eller du kan prøve cmd/terminal for at få listen over magiske funktioner i Python, åbne cmd eller terminal, skriv python3 for at gå til Python-konsollen og skriv:
>>> sig(int)>
Produktion:

Python magiske metoder
Nedenfor er lister over Python-magiske metoder og deres anvendelser.
Initialisering og konstruktion
- __ny__ : At blive kaldt i et objekts instansiering.
- __hed__ : At blive kaldt af metoden __ny__.
- __af__ : Det er ødelæggeren.
Numeriske magiske metoder
java input streng
- __bagagerum__ (selv): Implementerer adfærd for math.trunc()
- __loft__ (selv): Implementerer adfærd for math.ceil()
- __etage__ (selv): Implementerer adfærd for math.floor()
- __rund__ (selv,n): Implementerer adfærd for den indbyggede runde()
- __inverter__(selv): Implementerer adfærd for inversion ved hjælp af ~-operatoren.
- __abs__(selv): Implementerer adfærd for den indbyggede abs()
- __neg__(selv): Implementerer adfærd til negation
- __pos__(selv): Implementerer adfærd for unær positiv
Aritmetiske operatorer
- __tilføje__ (selv, anden): Implementerer adfærd for math.trunc()
- __sub__(selv, andet): Implementerer adfærd for math.ceil()
- __Jeg har__ (selv, anden): Implementerer adfærd for math.floor()
- __floordiv__ (selv, anden): Implementerer adfærd for den indbyggede runde()
- __div__(selv, andet): Implementerer adfærd for inversion ved hjælp af ~-operatoren.
- __truediv__(selv, andet): Implementerer adfærd for den indbyggede abs()
- __mod__(selv, andet): Implementerer adfærd til negation
- __divmod__(selv, andet): Implementerer adfærd for unær positiv
- __pow__: Implementerer adfærd for eksponenter ved hjælp af **-operatoren.
- __lshift__(selv, andet): Implementerer venstre bitvis skift ved hjælp af << operatoren.
- __rshift__(selv, andet): Implementerer højre bitvis skift ved hjælp af>>-operatoren.
- __og__(selv, andet): Implementerer bitvis og bruger &-operatoren.
- __eller__(selv, andet): Implementerer bitvis eller ved hjælp af | operatør.
- __xor__(selv, andet): Implementerer bitvis xor ved hjælp af ^-operatoren.
String magiske metoder
- __str__ (selv): Definerer adfærd for når str() kaldes på en forekomst af din klasse.
- __repr_ _(selv): T o blive kaldt af den indbyggede repr()-metode for at returnere en maskinlæsbar repræsentation af en type.
- __unicode__(selv): Denne metode til at returnere en unicode-streng af en type.
- __format__(selv, formatstr): returnere en ny strengstil.
- __hash_ _(selv): Det skal returnere et heltal, og dets resultat bruges til hurtig nøglesammenligning i ordbøger.
- __ikke-nul__(selv): Definerer adfærd for, hvornår bool() kaldes på en forekomst af din klasse.
- __du_ _(selv): Denne metode til at returnere en liste over attributter for en klasse.
- __sizeof__( selv): Det returnerer størrelsen af objektet.
Magiske sammenligningsmetoder
- __eq__ (selv, anden): Definerer adfærd for lighedsoperatøren, ==.
- __ne__(selv, andet): Definerer adfærd for ulighedsoperatøren, !=.
- __lt__ (selv, anden): Definerer adfærd for mindre-end-operatøren, <.
- __gt__ (selv, anden): Definerer adfærd for større-end-operatøren,>.
- __le__(selv, andet): Definerer adfærd for mindre-end-eller-lig-til-operatoren, <=.
- __ge__ (selv, anden): Definerer adfærd for større-end-eller-lig-til-operatoren,>=.
Dunder eller magiske metoder i Python
Lad os se nogle af Python-magiske metoder med eksempler:
1. __init__ metode
Det __init__ metode for initialisering påkaldes uden noget kald, når en forekomst af en klasse oprettes, som konstruktører i visse andre programmeringssprog såsom C++, Java, C#, PHP osv.
Disse metoder er grunden til, at vi kan tilføje to strenge med '+'-operatoren uden nogen eksplicit typecasting.
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)> |
>
>Produktion
>
2. __repr__ metode
__repr__ metode i Python definerer, hvordan et objekt præsenteres som en streng.
Nedenstående kodestykke udskriver kun hukommelsesadressen for strengobjektet. Lad os tilføje en __repr__ metode til at repræsentere vores objekt.
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)> |
>
>Produktion
java visualizer
Object: Hello>
Hvis vi prøver at tilføje en streng til den:
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' world'>)> |
java stak
>
>
Produktion:
TypeError : unsupported operand type(s) for +: 'String' and 'str'>
3. __add__ metode
__add__ metode i Python definerer, hvordan objekterne i en klasse lægges sammen. Det er også kendt som overbelastet additionsoperatør.
Tilføj nu __add__ metode til String-klassen:
Python
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > >def> __add__(>self>, other):> >return> self>.string>+> other> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' Geeks'>)> |
>
>Produktion
Hello Geeks>
Vi har diskuteret nogle af Python-magiske metoder eller Dunder-metoder. Magiske metoder i Python kan bruges til forskellige funktionaliteter i din klasse.
Håber du lærer om Python-magiske metoder fra denne artikel og bruger det i dine projekter.