python 대상에 대한 봉인, 구조 및 분석 방법

15549 단어
대상 3⾯ 특징: 봉인, 계승, 다태.

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)

실행 결과는 다음과 같습니다.
 

좋은 웹페이지 즐겨찾기