파이썬의 신 예제

Posted on

파이썬의 __new____는 “새 인스턴스 할당” 부분의 클래스별 사용자 지정과 유사합니다. 물론 이렇게 하면 새 인스턴스를 할당하는 대신 기존 인스턴스를 반환하는 것과 같은 비정상적인 작업을 수행할 수 있습니다. 따라서 파이썬에서는 이 부분을 반드시 할당과 관련된 것으로 생각해서는 안 됩니다. 우리가 필요로하는 것은 __new___가 어딘가에서 적합한 인스턴스를 내놓는 것입니다. 네임스페이스는 이름에서 개체로 매핑됩니다. 대부분의 네임스페이스는 현재 Python 사전으로 구현되지만 일반적으로 성능 은 제외) 눈에 띄지 않으며 나중에 변경될 수 있습니다. 네임스페이스의 예는 기본 제공 이름 집합(복근(abs)과 같은 함수 포함) 및 기본 제공 예외 이름입니다. 모듈의 전역 이름; 및 함수 호출의 로컬 이름입니다. 어떤 의미에서 개체의 특성 집합도 네임스페이스를 형성합니다.

네임스페이스에 대해 알아야 할 중요한 점은 다른 네임스페이스에 있는 이름 간에 는 전혀 관계가 없다는 것입니다. 예를 들어, 두 개의 서로 다른 모듈은 혼동 없이 최대화 기능을 정의할 수 있습니다. 클래스 특성인 함수 개체는 해당 클래스의 인스턴스에 대한 메서드를 정의합니다. 함수 정의가 클래스 정의에 텍스트로 동봉될 필요는 없습니다. 예를 들어 여기에서는 is_sent 변수를 True로 업데이트하는 전자 메일을 보내는 메서드를 추가했습니다. 먼저 데이터에 초점을 맞추는 각 사물 또는 개체는 일부 클래스의 인스턴스입니다. 새 메서드는 클래스를 첫 번째 인수로 호출 합니다. 그 책임은 해당 클래스의 새 인스턴스를 반환하는 것입니다.

클래스의 새 인스턴스를 만들고 이 개체를 local 변수 x. Derived 클래스에 할당하면 기본 클래스의 메서드를 재정의할 수 있습니다. 메서드는 동일한 개체의 다른 메서드를 호출할 때 특별한 권한이 없으므로 동일한 기본 클래스에 정의된 다른 메서드를 호출하는 기본 클래스의 메서드는 이를 재정의하는 파생 클래스의 메서드를 호출할 수 있습니다. (C++ 프로그래머의 경우: 파이썬의 모든 메서드는 효과적으로 가상입니다.) 그런 다음 MyClass.i 와 MyClass.f는 각각 정수 및 함수 개체를 반환하는 유효한 특성 참조입니다. 클래스 특성을 할당할 수도 있으므로 할당별로 MyClass.i의 값을 변경할 수 있습니다. __doc__는 또한 “간단한 예제 클래스”라는 클래스에 속하는 docstring을 반환하는 유효한 특성입니다. 참고 : 파이썬 2에서 클래스는 기본적으로 오래된 스타일입니다. 파이썬 2.2 이전에는 새로운 스타일의 클래스가 전혀 지원되지 않았습니다. 파이썬 2.2 이후부터 는 만들 수 있지만 명시적으로 새 스타일로 선언해야합니다.

특정 추상 데이터 형식을 예상하는 Python 코드 는 종종 해당 데이터 형식의 메서드를 에뮬레이트하는 클래스를 전달할 수 있습니다. 예를 들어 파일 개체의 일부 데이터를 서식을 지정하는 함수가 있는 경우 문자열 버퍼에서 데이터를 가져옵니다. 메서드는 자체 인수의 메서드 특성을 사용하여 다른 메서드를 호출할 수 있습니다. __init___는 __new___ 후에 호출되므로 하위 클래스에서 재정의할 때 추가된 코드가 계속 호출됩니다. 파이썬 3에는 새 또는 이전 스타일의 클래스가 없으며 `object`에서 직접 상속되므로 더 이상 기본으로 지정할 필요가 없습니다. 개체 기본 클래스는 모든 새 스타일 클래스에 공통적인 메서드/속성을 제공합니다.