logo

Privémethoden in Python

Inkapseling is een van de fundamentele concepten in objectgeoriënteerd programmeren (OOP) in Python. Het beschrijft het idee van het verpakken van gegevens en de methoden die met gegevens binnen één eenheid werken. Dit legt beperkingen op aan de directe toegang tot variabelen en methoden en kan de onbedoelde wijziging van gegevens voorkomen. Een klasse is een voorbeeld van inkapseling omdat deze alle gegevens inkapselt die lid zijn functies , variabelen , etc. Er kunnen nu enkele scenario's zijn waarin we beperkingen moeten stellen aan sommige methoden van de klasse, zodat ze niet toegankelijk zijn buiten de klasse, noch door subklassen. Om dit te implementeren spelen particuliere methoden een rol.

Private-functies in Python

Neem een ​​voorbeeld uit de praktijk: een automotor, die uit vele onderdelen bestaat, zoals bougies, kleppen, zuigers, enz. Geen enkele gebruiker gebruikt deze onderdelen rechtstreeks, maar weet alleen hoe hij de onderdelen moet gebruiken die ze gebruiken. Dit is waar privémethoden voor worden gebruikt. Het wordt gebruikt om de innerlijke functionaliteit van elke klasse voor de buitenwereld te verbergen. Privé methoden zijn die methoden waartoe noch buiten de klasse, noch door een basisklasse toegang mag worden verkregen. In Python bestaan ​​er geen privémethoden die alleen binnen een klasse toegankelijk zijn. Als u echter een privémethode wilt definiëren, laat u de lidnaam voorafgaan door de dubbel onderstrepingsteken __ . Opmerking: De __init__-methode is a bouwer en wordt uitgevoerd zodra een object van een klasse wordt geïnstantieerd.



Python3






c#-tutorial



# Creating a Base class> class> Base:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> # Creating a derived class> class> Derived(Base):> >def> __init__(>self>):> ># Calling constructor of> ># Base class> >Base.__init__(>self>)> >def> call_public(>self>):> ># Calling public method of base class> >print>(>' Inside derived class'>)> >self>.fun()> >def> call_private(>self>):> ># Calling private method of base class> >self>.__fun()> # Driver code> obj1>=> Base()> # Calling public method> obj1.fun()> obj2>=> Derived()> obj2.call_public()> # Uncommenting obj1.__fun() will> # raise an AttributeError> # Uncommenting obj2.call_private()> # will also raise an AttributeError>

>

conversie van int naar string in Java

>

Uitgang:

Public method Inside derived class Public method>
Traceback (most recent call last): File '/home/09d6f91fdb63d16200e172c7a925dd7f.py', line 43, in obj1.__fun() AttributeError: 'Base' object has no attribute '__fun' Traceback (most recent call last): File '/home/0d5506bab8f06cb7c842501d9704557b.py', line 46, in obj2.call_private() File '/home/0d5506bab8f06cb7c842501d9704557b.py', line 32, in call_private self.__fun() AttributeError: 'Derived' object has no attribute '_Derived__fun'>

Het bovenstaande voorbeeld laat zien dat privémethoden van de klasse noch buiten de klasse, noch door een basisklasse toegankelijk zijn. Privémethoden zijn echter toegankelijk door de privémethoden via openbare methoden aan te roepen.

Voorbeeld:

Python3


namen van steden VS



# Creating a class> class> A:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> ># Calling private method via> ># another method> >def> Help>(>self>):> >self>.fun()> >self>.__fun()> # Driver's code> obj>=> A()> obj.>Help>()>

>

>

Uitgang:

Public method Private method>

Naam mangelen

Python biedt een toverstaf die kan worden gebruikt om ook buiten de klasse privémethoden aan te roepen. Dit staat bekend als naammangelen. Het betekent dat elke identificatie van de vorm __geek (minstens twee voorlooponderstrepingstekens of maximaal één achterliggend onderstrepingsteken) wordt vervangen door _classname__geek, waarbij de klassenaam de huidige klassenaam is, waarbij de voorlooponderstrepingstekens zijn verwijderd.

sed-opdracht

Voorbeeld:

Python3




# Creating a class> class> A:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> # Driver's code> obj>=> A()> # Calling the private member> # through name mangling> obj._A__fun()>

paaseieren in Android

>

>

Uitgang:

Private method>