Articles

Python-Public,Protected,Private 원

적인 개체를 중심의 언어와 같은 C++및 Java 제어스 클래스 자원에 의해 공개하고,개인,그리고 보호되는 키워드가 있습니다. 클래스의 개인 멤버는 클래스 외부 환경에서 액세스가 거부됩니다. 그들은 클래스 내에서만 처리 될 수있다.

Public Member

Public member(일반적으로 클래스에서 선언 된 메소드)는 클래스 외부에서 액세스 할 수 있습니다. 공용 메서드를 호출하려면 동일한 클래스의 객체가 필요합니다. 개인 인스턴스 변수 및 공용 메서드의 이러한 배열은 데이터 캡슐화의 원리를 보장합니다.

Python 클래스의 모든 멤버는 기본적으로 공개됩니다. 클래스 환경 외부에서 모든 멤버에 액세스할 수 있습니다.

예제:공공의 속성

사본

class Student: schoolName = 'XYZ School' # class attribute def __init__(self, name, age): self.name=name # instance attribute self.age=age # instance attribute

액세스할 수 있습니다Student클래스의 특성 및 수정할 수도 그들의 값으로 아래와 같습니다.

예: 액세스 공원

사본

>>> std = Student("Steve", 25)>>> std.schoolName'XYZ School'>>> std.name'Steve'>>> std.age = 20>>> std.age25

보호된 회원

보호된 구성원의 클래스에 액세스할 수 있 클래스에서 이용하실 수 있으며,또한 그것의 서브 클래스입니다. 다른 환경에 대한 액세스는 허용되지 않습니다. 이를 통해 상위 클래스의 특정 리소스가 하위 클래스에서 상속됩니다. 인스턴스 변수가 보호되도록하기위한 파이썬의 규칙은 접두사_(단일 밑줄)을 추가하는 것입니다. 이렇게하면 하위 클래스 내에서 그렇지 않으면 효과적으로 액세스 할 수 없게됩니다.

예: 보호된 속성

사본

class Student: _schoolName = 'XYZ School' # protected class attribute def __init__(self, name, age): self._name=name # protected instance attribute self._age=age # protected instance attribute

사실,이를 방지하지 않 변수를 인스턴스에 액세스하거나 수정하는 인스턴스입니다. 를 수행할 수 있습니다:

예:액세스하 보호 회원

사본

>>> std = Student("Swati", 25)>>> std._name'Swati'>>> std._name = 'Dipa'>>> std._name'Dipa'

그러나,정의할 수 있습니다 호텔 객실을 장식하고 그것을 보호 아래와 같습니다.

예: 보호된 속성

사본

class Student:def __init__(self,name):self._name = name@propertydef name(self):return [email protected] name(self,newname):self._name = newname

위@산 장식을 사용하는name()@name.settername()방법으로 재산 setter 방법입니다. 이제_name가 보호됩니다.

예:액세스하 보호 회원

사본

>>> std = Student("Swati")>>> std.name'Swati'>>> std.name = 'Dipa'>>> std.name'Dipa'>>> std._name # still accessible

위에,우리는 우리 사용되는std.name_name_외부에서 해당 클래스입니다.

광고

개인원

Python 이 없는 메커니즘을 효과적으로 제한 액세스를 인스턴스를 어떤 변수 또는 방법입니다. Python 규정 컨벤션의 접두사로 사용하면 변수의 이름/는 방법으로 하나 또는 두 개의 밑줄을 에뮬레이션의 동작을 보호하고 개인 액세스 지정자.

이중 밑줄__변수 앞에 붙이면 비공개가됩니다. 그것은 수업 외부에서 그것을 만지지 말라는 강력한 제안을 제공합니다. 모든 시도를 할 것이 결과에 AttributeError:

예:개인 속성

사본

class Student: __schoolName = 'XYZ School' # private class attribute def __init__(self, name, age): self.__name=name # private instance attribute self.__salary=age # private instance attribute def __display(self): # private method print('This is private method.')
를 들어:

사본

>>> std = Student("Bill", 25)>>> std.__schoolNameAttributeError: 'Student' object has no attribute '__schoolName'>>> std.__nameAttributeError: 'Student' object has no attribute '__name'>>> std.__display()AttributeError: 'Student' object has no attribute '__display'

Python 수행하는 이름을 엉망으로 개인 변수입니다. 이중 밑줄을 가진 모든 멤버는_object._class__variable로 변경됩니다. 따라서 수업 외부에서 여전히 액세스 할 수 있지만 연습을 자제해야합니다.

예:

사본

>>> std = Student("Bill", 25)>>> std._Student__name'Bill'>>> std._Student__name = 'Steve'>>> std._Student__name'Steve'>>> std._Student__display()'This is private method.'

따라서,Python 제공적 개념의 구현중,보호 및 개인 액세스를 변경하지만 같은 다른 언어는 C#,Java,C++.