logo

Python의 비공개 메서드

캡슐화는 기본 개념 중 하나입니다. 객체 지향 프로그래밍(OOP) 파이썬에서 . 데이터를 래핑하는 아이디어와 하나의 단위 내에서 데이터에 대해 작업하는 방법을 설명합니다. 이렇게 하면 변수와 메서드에 직접 액세스하는 것이 제한되고 실수로 데이터가 수정되는 것을 방지할 수 있습니다. 클래스는 멤버인 모든 데이터를 캡슐화하므로 캡슐화의 예입니다. 기능 , 변수 등. 이제 클래스 외부나 하위 클래스에서 액세스할 수 없도록 클래스의 일부 메서드에 제한을 적용해야 하는 몇 가지 시나리오가 있을 수 있습니다. 이 개인 메소드를 구현하려면 중요한 역할을 합니다.

Python의 리바테 함수

스파크 플러그, 밸브, 피스톤 등과 같은 많은 부품으로 구성된 자동차 엔진과 같은 실제 사례를 생각해 보십시오. 사용자는 이러한 부품을 직접 사용하지 않으며 오히려 부품을 사용하는 방법만 알고 있습니다. 이것이 개인 메소드가 사용되는 이유입니다. 이는 모든 클래스의 내부 기능을 외부 세계로부터 숨기는 데 사용됩니다. 비공개 메소드 클래스 외부나 기본 클래스에서 액세스하면 안 되는 메서드입니다. Python에는 클래스 내부 외에는 접근할 수 없는 Private 메서드가 없습니다. 그러나 개인 메서드 접두사를 정의하려면 멤버 이름에 이중 밑줄 __ . 메모: __init__ 메소드는 건설자 클래스의 객체가 인스턴스화되자마자 실행됩니다.



파이썬3






char에서 int로 변환 java



# 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>

>

Java의 유형 캐스팅 및 유형 변환

>

산출:

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'>

위의 예는 클래스의 비공개 메서드가 클래스 외부나 기본 클래스에서 액세스할 수 없음을 보여줍니다. 그러나 개인 메서드는 공용 메서드를 통해 개인 메서드를 호출하여 액세스할 수 있습니다.

예:

파이썬3


sqrt 자바 수학



# 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>()>

>

YouTube 비디오 vlc 다운로드

>

산출:

Public method Private method>

이름 맹글링

Python은 클래스 외부에서도 비공개 메서드를 호출하는 데 사용할 수 있는 마술 지팡이를 제공합니다. 이를 이름 맹글링이라고 합니다. 이는 __geek(최소 2개의 선행 밑줄 또는 최대 1개의 후행 밑줄) 형식의 식별자가 _classname__geek로 대체됨을 의미합니다. 여기서 클래스 이름은 선행 밑줄이 제거된 현재 클래스 이름입니다.

예:

파이썬3


YouTube 비디오 vlc 다운로드



# 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()>

>

>

산출:

Private method>