파이썬 객체 지향 - 고급 - 내장 회원 및 학습 마법 원숭이 방법 #


 

 

### 내장 회원

```파이썬

# 클래스 / 객체 / 객체 .__ dict__를 얻을 수있는 클래스의 멤버에 속한다

고해상도 = 데모 .__ dict__ # GET 회원의 현재의 클래스

고해상도 =이 .__는 #은 객체의 현재 멤버가 속한 가져 오기 dict__ OBJ

# 문서 정보 클래스 / 객체 .__ doc__를의 클래스를 돌려

입술 = 데모 .__ doc__를

입술 = OBJ .__ doc__를

# 구성된 클래스의 문자열 이름을 가져옵니다

입술 = 데모 .__ name__

현재 파일이 __main__로 표시되는 경우 # 클래스의 파일 이름, 위치하기

입술 = 데모 .__ module__

# __Bases__ 부모 클래스의 현재 클래스의 목록을

고해상도 = 데모 .__ base__ # GET 최초의 부모 클래스 상속

고해상도 = 데모 .__ bases__ # GET 상속 부모 클래스의 모든 목록

# MRO는 현재 클래스의 상속 체인의 목록을

데모 = 아무것도 .__ mro__

```

### 분류 방법

```파이썬

1. 개체 방법

    특징 :

        방법은 다음과 같이 자기 파라미터를 포함하는 클래스 정의

        2. 자체를 포함하는 방법은 단지 목적을 사용하여 호출 될 수있다

        3. 방법은 객체가 전달 부를 것이다

2. 클래스 메소드

    특징 :

        1. 클래스에 정의 된 방법은 장식이 @classmethod 장식되어 있습니다

        2. 이 방법은 CLS 줄 인수를 가지고 있습니다. 직접 클래스 호출을 사용하지 않아도 객체를 인스턴스화

        3. 이 방법은 전달 된 클래스를 호출합니다

3. 바인딩 클래스 메소드

    특징 :

        1. 클래스에 정의 된 방법

        2. 에만 호출 클래스를 사용하여

        3. 수신 객체 또는 클래스는 전송되지 않습니다

4. 정적 메소드

    특징 :

        1. 클래스에 정의 된 방법에서, 우리는 @staticmethod 장식하는 장식을 사용하여

        2. 당신은 객체 또는 클래스 호출을 사용할 수 있습니다

        3. 수신 객체 또는 클래스는 전송되지 않습니다

```

### 일반적으로 사용되는 기능

```파이썬

# 감지 클래스와 관련 개체

# Issubclass (하위 클래스는 상위 클래스) # 클래스가 다른 클래스의 하위 클래스 여부를 검출

# 입술 issubclass = (D, B)

중 # isinstance (객체 클래스) # 객체 클래스의 결과의 클래스 또는 서브 클래스의 인스턴스인지를 검출

# = 입술 isinstance (D, A)

# 클래스의 회원과는 운영과 관련된 객체

클래스 / 객체 검출 #으로 hasattr (객체 / 클래스의 멤버 이름 ')의 지정된 멤버의 이름을 포함

# = 입술으로 hasattr (d, '이름')

#getattr (객체 / 클래스의 멤버 이름 ')는 클래스 번호 / 객체의 멤버의 값을 취득

# = 입술 getattr (d '말')

멤버 # 1 않은 setattr의 속성치 (오브젝트 / 클래스의 멤버 이름 ","부재의 값 ")이 제공 클래스 / 개체

입술 않은 setattr = (d, '이름', 'OOO')

# 인쇄 (d.name)

#delattr (클래스 / 객체 멤버 이름 ')를 삭제 클래스 / 대상 부재 적절 델 개체 삭제는 동일한 결과 구성원

# delattr (D, '이름')

# 디렉터리 () # 현재 객체의 목록을하면 회원에 액세스 할 수 있습니다

아무것도 = (d)를 말할

```

### 매직 방법

수동 메소드 호출을 필요로하지 않습니다> 매직 방법은 자동으로 실행 할 수 있습니다

```파이썬

1. __init__ 초기화 방법 *****

    트리거 메카니즘 : 트리거 후 즉시하는 오브젝트를 인스턴스화하고있어서

    역할 : 구성원 속성, 개방 또는 일부 리소스를 생성의 호출 할당 방법 : 완전한 개체가 현재와 같은 일부 초기화 작업을 만들었습니다. .

    매개 변수 : 자기, 현재의 객체를 수신은, 다른 매개 변수는 필요에 따라 정의 할 수 있습니다

    반환 값 : 없음

    주의 사항 : 없음

2. __new__ 생성자 ****

    트리거 메커니즘 : 자동 트리거 (__init__ 전에 트리거) 객체 인스턴스화

    역할 : 관리 제어 프로세스 개체가 생성

    파라미터 : 현재 클래스를 수신 CLS는, 다른 파라미터는 초기화 파라미터의 방법에 따라 결정된다

    반환 값 : 더 리턴 값은 객체 결과 없음의 인스턴스가없는 경우, 객체 .__ 새로운 __ (CLS) 생성 된 객체 반환해야합니다

    주의 사항 :

            첫번째 파라미터 외에도 파라미터 __init__ 방법 __new__ 일관성있어서,

            더 리턴 값은 객체 결과 없음의 인스턴스가없는 경우, 객체 .__ 새로운 __ (CLS) 생성 된 객체를 반환해야합니다

    시나리오 : 싱글 톤 디자인 패턴 디자인 패턴

3. __del__ 소멸자 *****

    트리거 메커니즘 : 클래스 객체가 파괴 자동으로 트리거

    개체의 릴리스 만들 때 일부 자원은 개폐 만들거나 :의 역할을

    매개 변수 : 자기는, 현재의 객체를 받아

    반환 값 : 없음

    주의 사항 : 없음

4. __call__ ***

    트리거 메커니즘 : 자동으로 트리거 할 때 직접 함수 호출로 객체

    전화를 용이하게 유도 단계의 일반적인 클래스 또는 객체 : 액션

    매개 변수 : 자기 전류 객체를 수신, 다른 매개 변수에 따라이 요구의 단점을 호출

    반환 값 : 선택

5 .__ len__

    트리거 메카니즘 : 자동 트리거 현재 개체를 감지하는 LEN 기능 사용시

    작업 : 현재의 객체의 검출 정보에 사용될 수있다 렌 함수는 데이터 인

    매개 변수 : 자기 전류 객체를 수신

    반환 값 :이 있어야하고, 정수 여야합니다

    주 : 속성 값을 얻을 렌, 재산 반환 값으로 반환되는의 길이가 될 수있다

6 .__ str__

    트리거 메커니즘 : 인쇄 기능 STR 또는 트리거 할 때 자동으로 개체에서 작동

    작업 : 오브젝트 코드 문자열을 반환은, 사용자 정보를 인쇄 할 수 있습니다

    매개 변수 : 자기, 현재 객체를 수신

    반환 값 : 멀리 문자열 형식의 값이어야합니다,이 있어야합니다

7 .__ repr__

    트리거 메커니즘 : 자동으로 트리거 할 때 변환에에 repr 방법을 사용하여 현재 객체

    결과 : 결과는 조작 대상 기능에 repr 제공 될 수있다

    매개 변수 : 자기, 현재 객체를 수신

    반환 값 : 멀리 문자열 형식의 값이어야합니다,이 있어야합니다

    참고 :이 방법 __str__ 마법이없는 경우 정상적인 상황에서, __ repr__ 방법은 마법의 방법이 __str__ 대체합니다

8 .__ bool__

    트리거 메커니즘 : 현재 사용 부울 기능은 기본적으로 자동 트리거 현재 개체를 변환은 객체가 True로 변환됩니다.

    효과 : 부울 객체는 데이터를 변환 할 수 있습니다 변환기의 형식을 대체 할 수

    매개 변수 : 자기 객체를 수신

    반환 값 : 반환 값은 부울이어야합니다

```

### 관련 마법 방법의 회원

```파이썬

## 1. __getattribute__ 가장 높은 우선 순위

    트리거 메카니즘은 : 객체 멤버를 액세스하는 경우에 관계없이 전류가 회원인지 여부를 자동 트리거

    역할 : 데이터의 일부 구성원이 처리 할 때 당신은 개체를 얻을 수 있습니다

    매개 변수 : 자체 수신 객체 현재 부재의 항목 이름은 액세스를 수신

    반환 값 : 비용 소비, 반환 값은 액세스의 결과입니다

    참고 : 현재의 마술 방법에서 현재 개체의 구성원에 금지 액세스 할 수 있습니다, 그것은 재귀를 트리거합니다.

            당신이 마법 방법의 현재 구성원의 개체에 액세스하려면 개체에 액세스하는 데 사용되어야합니다

            형식 : 오브젝트 .__의 getAttribute __ (자체, 항목)

## 2. __getattr__

    트리거 메커니즘 : 액세스 회원이 개체가 존재하지 않는, 자동 트리거

    역할 : 오류가 존재하지 않는 경우, 회원 액세스를 방지하기 위해도 존재하지 않는 과제의 구성원이 될 수 있습니다

    매개 변수 : 현재 개체를 수신 자체가 현재 부재의 항목 이름 액세스를 수신

    반환 값 : 선택

    참고 : __getattribute__ 방법이 때, 방법은 __getattribute__ 수행하는 것

    참고도하지 방문을 다시이 방법의 현재 구성원에 존재하지 않는, 그것은 재귀 트리거

## 3. __setattr__

    트리거 메커니즘 : 자동으로 개체의 멤버 트리거에 할당하는 경우 (추가 포함, 수정)

    역할 : 관리의 제한 또는 대상 회원을 추가 및 수정 작업하기

    매개 변수 : 1. 도 2는 자기 현재의 오브젝트를 수신한다. 회원 이름 키 설정 3. 발 부재 설정 값

    반환 값 : 없음

    참고 : 직접 현재 할당의 회원을 대상으로 현재 금지 마법 방법에있어서, 재귀를 트리거

            현재 개체의 멤버에 할당 할 경우, 객체가 필요

            형식 : 오브젝트 .__ 않은 setattr __ (자체, 키, 값)

## 4. __delattr__

    트리거 메커니즘 : 삭제가 자동으로 트리거 멤버 객체

    멤버를 제거하려면 개체를 제한하기 위해 주어진 것을 방지 할 수, 당신은 또한 존재하지 않는 멤버를 삭제할 수의 역할을

    매개 변수 : 1, 자신이 현재 객체를받습니다. 항목 삭제 회원 이름

    반환 값 : 없음

    참고 : 마법 방법의 현재 구성원에서 개체를 삭제하지 마십시오, 그것은 재귀를 트리거합니다.

            현재 개체의 구성원을 제거하려면, 우리는 개체의 도움이 필요합니다

            형식 : 오브젝트 .__ delattr __ (자체, 항목)

```

### 액세스 순서의 회원! ! !

1.를 호출`__getattribute__` 마술 방법

2. 통화 데이터 기술자 나중에 말하는 것입니다 []

현재 개체의 3 호 회원

현재 클래스의 멤버를 호출 (4)

5. 통화 데이터 기술자는 [비 나중에 이야기]

부모 클래스의 멤버를 호출 (6)

7. 전화 마법의 방법`__getattr__`

> 이들의 부재를 호출하는 상기 일련의 단계가 성공적으로 호출 될 수있는 경우, 다시 수행되지

 

마스터리는 추월을 구부릴 것, 방법을 학습!

원숭이에 학습 : 단지 부티크 자신의 업적을!

추천

출처www.cnblogs.com/itxdl/p/12522545.html