python 대상에 대한 봉인, 구조 및 분석 방법
1. 포장
봉인이란 숨겨진 대상의 속성과 세부 사항을 대외적으로 공개하여 프로그램에서 속성의 읽기와 수정을 제어하는 접근 단계를 말한다.
클래스 자체는 ⼀種 봉인이다. 클래스를 통해 데이터(속성)와 ⾏位(⽅法)를 결합시켜 ⼀개의 유기적인 전체를 형성할 수 있다. 즉, 데이터와 데이터에 대한 조작을 유기적으로 결합시킨다.봉인된 것은 안전성을 강화하고 프로그래밍을 간소화하는 것이다. 이로써 사용자는 구체적인 실현 세부 사항을 알 필요가 없다. 외부 연결을 통해 특정한 접근 권한으로 유형의 구성원을 만들어야 한다.구성원의 사유화는 봉인을 실현하는 단계이다.모든 구성원은 기본적으로 공유이다.
1.1.속성 사유화
클래스의 내부 속성을 외부에 직접 접근하지 않으려면 이 속성의 앞에 두 개의 밑줄을 긋는다,Python에서 개 속성의 전\12207이 나타나면이 속성은 현재 클래스의 ⽅법에서만 직접 접근할 수 있고 대상을 통해 직접 접근할 수 없다는 것을 나타낸다. 이 변수를 사유 변수라고 부른다.예를 들어,
class PlayGame:
def __init__(self, gamename, gametype, gamescore, player):
self.gamename = gamename
self.gametype = gametype
self.gamescore = gamescore
self.__player = player # player
def play(self):
print("game start")
self.comment()
def comment(self):
print("good game")
우리는 클래스 밖에서player 속성의 값을 직접 가져오고 수정할 수 없습니다. 예를 들어,
dmc5 = PlayGame("Devil May Cry5", "act", 10, "Forseti")
print(dmc5.player)
실행 결과는 다음과 같습니다.
AttributeError: type object 'PlayGame' has no attribute 'player'
우리는 을 통해dict__클래스 내의 값을 보려면 다음과 같이 하십시오.
print(dmc5.__dict__)
실행 결과는 다음과 같습니다.
{'gamename': 'Devil May Cry5', 'gametype': 'act', 'gamescore': 10, '_PlayGame__player': 'Forseti'}
실제python에서 개인 속성의 이름을 변경해서 개인 속성 이름으로 접근할 수 없습니다. 변경된 속성 이름은 다음과 같습니다:클래스사유 속성 이름.우리는 변경된 속성 이름을 통해 이 속성 값을 볼 수 있다.예를 들어,
print(dmc5._PlayGame__player)
실행 결과는 다음과 같습니다.
Forseti
우리도 클래스 내에서 공유 방법을 정의하여 사유 속성 값을 얻고 수정할 수 있다. 예를 들어
class PlayGame:
def __init__(self, gamename, gametype, gamescore, player):
self.gamename = gamename
self.gametype = gametype
self.gamescore = gamescore
self.__player = player
def play(self):
print("game start")
self.comment()
def comment(self):
print("good game")
def get_player(self): #
return self.__player
def set_player(self, player): #
self.__player = player
print(dmc5.get_player())
dmc5.set_player("King")
print(dmc5.get_player())
실행 결과는 다음과 같습니다.
Forseti
King
1.2.속성 장식기
사유 속성에 대한 접근으로 인해 공개법의 간접 접근법이 너무 번거롭다.python은 편리한 문법, 속성 장식기를 제공했다. 속성 장식기를 통해 사유 속성에 쉽게 접근할 수 있고 속성 장식기는 법 속성을 속성화할 수 있다.
예를 들어,
class PlayGame:
def __init__(self, gamename, gametype, gamescore, player):
self.gamename = gamename
self.gametype = gametype
self.gamescore = gamescore
self.__player = player
def play(self):
print("game start")
self.comment()
def comment(self):
print("good game")
@property # , player
def player(self):
return self.__player
@player.setter # , :@ .setter,
def player(self, player):
self.__player = player
print(dmc5.player)
dmc5.player = "King"
print(dmc5.player)
실행 결과는 다음과 같습니다.
Forseti
King
1.3.구성원 방법의 사유화
\"\"법의 이름 앞에\을 붙이면성명 이 법 은 사유 법 을 현재 유형 에서만 조정 을 외부 에서 통과 대상 을 직접 조정 할 수 없 는 것 이 사유 법 이다.
2. 구조와 분석
2.1.구조 방법
구조 방법의 구성법은 초기화 대상(대상을 만들지 않음)에 구성법을 추가하고 구성법에 구성원 속성을 추가할 수 있다.시스템은 대상을 실례화할 때 자동으로 구조 방법을 호출한다.분석 방법의 첫 번째 매개 변수는self이고 다른 매개 변수는 필요에 따라 정의해야 하며 그 어떠한 다른 값도 되돌려서는 안 된다.예를 들어,
class PlayGame:
def __init__(self, gamename, gametype, gamescore, player):
self.gamename = gamename
self.gametype = gametype
self.gamescore = gamescore
self.__player = player
이것이 바로 구조 방법이다.
구조법을 정의하지 않으면 구조법을 개별적으로 정의하고 구조법을 정의하면 시스템은 구조법을 움직이지 않습니다.클래스에는 구조 방법만 있을 수 있으며 여러 개의 클래스를 정의하면 이전 클래스를 덮어씁니다.구조 함수는 시스템이 실례화 대상을 조정할 때 움직여야 하며, 조정하지 말아야 한다.
2.2.분석 방법
분석 방법은 대상이 소각될 때 자원을 방출하는 것이다.대상을 삭제할 때 시스템이 움직일 것입니다.self를 제외하고는 다른 인자가 없고 되돌아오는 값이 없습니다.구문은 입니다.
def __del__(self):
#
2.3.__str__메서드
__str__방법은 대상을 문자열로 바꿀 수 있으며, 대상에 print ()나str () 를 호출할 때 자동으로 호출되며, 매개 변수는self이고, 되돌아오는 값은 문자열입니다.예를 들어,
class PlayGame:
def __init__(self, gamename, gametype, gamescore, player):
self.gamename = gamename
self.gametype = gametype
self.gamescore = gamescore
self.__player = player
def __str__(self):
return " "
print(dmc5)
실행 결과는 다음과 같습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.