Python 고급 전용 클래스 방법의 실례 상세 설명
빼 고getitem__ 와setitem__ 그 밖 에 Python 에는 더 많은 전용 함수 가 있 습 니 다.심지어 모 를 수도 있 는 기능 들 을 모 의 해 낼 수 있다.아래 의 예 는 UserDict 의 다른 전용 방법 을 보 여 줍 니 다.
def __repr__(self): return repr(self.data) (1)
def __cmp__(self, dict): (2)
if isinstance(dict, UserDict):
return cmp(self.data, dict.data)
else:
return cmp(self.data, dict)
def __len__(self): return len(self.data) (3)
def __delitem__(self, key): del self.data[key] (4)
(1) __repr__ repr(instance)를 호출 할 때 호출 되 는 전용 방법 입 니 다.repr 함 수 는 내 장 된 함수 로 대상 의 문자열 을 되 돌려 줍 니 다.그것 은 클래스 의 인 스 턴 스 뿐만 아니 라 모든 대상 에 사용 할 수 있다.비록 네가 그것 을 모 르 지만,너 는 이미 repr 에 대해 상당히 익숙 해 졌 다.대화 식 창 에서 변수 이름 만 입력 한 다음 ENTER,Python 을 누 르 면 repr 를 사용 하여 변수의 값 을 표시 합 니 다.사전 d 를 만 들 고 print repr(d)로 보 세 요.(2) __cmp__ 클래스 인 스 턴 스 를 비교 할 때 호출 됩 니 다.일반적으로,당신 은==을 사용 하여 임의의 두 파 이 썬 대상 을 비교 할 수 있 습 니 다.클래스 인 스 턴 스 만 있 는 것 이 아 닙 니 다.데이터 형식 을 언제 내 장 했 는 지 정의 하 는 규칙 이 있 습 니 다.예 를 들 어 사전 은 똑 같은 키워드 와 값 을 가지 고 있 을 때 같 습 니 다.클래스 인 스 턴 스 에 대해 서 는 를 정의 할 수 있 습 니 다.cmp__ 방법,자신 이 비교적 논 리 를 작성 한 후에 당신 은==을 사용 하여 당신 의 종 류 를 비교 할 수 있 습 니 다.Python 은 당신 의 를 호출 할 것 입 니 다.cmp__ 전용 방법.
(3) __len__ len(instance)을 호출 할 때 호출 됩 니 다.len 은 내 장 된 함수 로 대상 의 길 이 를 되 돌 릴 수 있 습 니 다.그것 은 길이 가 있어 야 한다 고 여 겨 지 는 모든 대상 에 사용 할 수 있다.문자열 의 len 은 문자 갯 수 입 니 다.사전 의 len 은 키워드 의 개수 입 니 다.목록 이나 시퀀스 의 len 은 요소 의 개수 입 니 다.클래스 인 스 턴 스 에 대한 정의len__ 방법,이어서 자신의 길이 계산 을 작성 한 다음 에 len(instance)을 호출 하면 Python 이 당신 의 를 호출 합 니 다.len__ 전용 방법.
(4) __delitem__ del instance[key]를 호출 할 때 호출 합 니 다.사전 에서 하나의 요 소 를 삭제 하 는 방법 으로 기억 할 수 있 습 니 다.클래스 인 스 턴 스 에서 del 을 사용 할 때 Python 이 를 호출 합 니 다.delitem__ 전용 방법.
Note: Python v s. Java equality and i dentity
자바 에서 str1==str2 를 사용 하면 두 문자열 변수 가 같은 물리 적 메모리 위 치 를 가리 키 는 지 확인 할 수 있 습 니 다.이것 은 대상 동일성 이 라 고 하 는데 Python 에 str1 is str 2 라 고 쓰 여 있다.자바 에서 두 문자열 의 값 을 비교 하려 면 str1.equals(str2)를 사용 해 야 합 니 다.Python 에서 str 1=str 2 를 사용 하 십시오.일부 자바 프로그래머 들 은 자바 에서==값 이 아 닌 동일성 을 통 해 비교 하기 때문에 세상 이 더 좋다 고 가 르 쳤 다.이 사람들 은 Python 의 이'심각 한 결함'을 받 아들 이 는 데 시간 이 좀 걸 릴 것 이다.
이곳 에서 당신 은"이 모든 일 들 은 단지 클래스 에서 내 장 된 데이터 형식 에 대해 할 수 있 는 조작 을 하기 위해 서 일 뿐"이 라 고 생각 할 수 있 습 니 다.좋 습 니 다.사전 과 같은 내 장 된 데이터 형식 으로 계승 할 수 있다 면 일이 훨씬 쉬 워 집 니 다.비록 당신 이 이렇게 할 수 있 지만,전용 방법 은 여전히 유용 합 니 다.왜냐하면 그것 은 UserDict 와 같은 패키지 류 만 사용 할 수 있 기 때 문 입 니 다.
전용 방법 은 모든 종류의 키 를 사전 처럼 저장 할 수 있 음 을 의미 합 니 다.-값 이 맞습니다.정의 만 하면setitem__ 방법모든 종 류 는 하나의 서열 처럼 표현 할 수 있 습 니 다.정의 만 하면getitem__ 방법어떤 정의 도cmp__ 방법의 종 류 는=로 비교 할 수 있다.그리고 만약 당신 의 클래스 가 비슷 한 길 이 를 가 진 것 으로 표현 된다 면 GetLength 방법 을 정의 하지 말고len__ 방법,그리고 len(instance)을 사용 합 니 다.
Note:
다른 대상 언어 는 대상 을 대상 으로 하 는 물리 적 모델 만 정의 합 니 다("이 대상 은 GetLength 방법 이 있 습 니 다").Python 의 전용 클래스 방법 은 와 같 습 니 다.len__ 대상 의 논리 모델 을 정의 할 수 있 도록 합 니 다("이 대상 은 길이 가 있 습 니 다")
Python 에는 많은 다른 전용 방법 이 존재 합 니 다.클래스 를 수치 처럼 표현 할 수 있 는 전용 방법 이 있 습 니 다.클래스 인 스 턴 스 에 추가,감소,그리고 다른 산수 작업 을 수행 할 수 있 습 니 다.(이 점 에 대한 전형 적 인 예 는 복 수 를 나타 내 는 클래스 로 수치 가 실수 와 허수 부분 을 가지 고 있다 는 것 이다.)call__ 방법 은 하나의 클래스 를 함수 처럼 표현 하고 하나의 인 스 턴 스 를 직접 호출 할 수 있 도록 합 니 다.또한 다른 전용 함수 가 존재 합 니 다.클래스 가 읽 기 전용 또는 쓰기 전용 데이터 속성 을 가 질 수 있 도록 합 니 다.다음 장 에서 우 리 는 이런 것들 을 더 많이 이야기 할 것 입 니 다.
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.