질문 : Python에서 이전 스타일과 새 스타일 클래스의 차이점은 무엇입니까?
Python에서 이전 스타일과 새 스타일 클래스의 차이점은 무엇입니까? 둘 중 하나를 언제 사용해야합니까?
답변
Python 2.1까지 구식 클래스는 사용자가 사용할 수있는 유일한 버전이었습니다.
(구식) 클래스의 개념은 유형의 개념과 관련이 없습니다. x
가 구식 클래스의 인스턴스 인 경우 x.__class__
x
의 클래스를 지정하지만 type(x)
는 항상 <type 'instance'>
.
이는 클래스와 관계없이 모든 구식 인스턴스가 인스턴스라고하는 단일 내장 유형으로 구현된다는 사실을 반영합니다.
클래스와 유형의 개념을 통합하기 위해 Python 2.2에서 새로운 스타일의 클래스가 도입되었습니다 . 새로운 스타일의 클래스는 그 이상도 이하도 아닌 단순히 사용자 정의 유형입니다.
x가 새 스타일 클래스의 인스턴스 인 경우 type(x)
는 일반적으로 x.__class__
와 동일합니다 (보장되지는 않지만 새 스타일 클래스 인스턴스는 x.__class__
대해 반환 된 값을 재정의 할 수 있음). .
새로운 스타일의 클래스를 도입 한 주된 동기는 전체 메타 모델과 함께 통합 된 객체 모델을 제공하는 것 입니다.
또한 대부분의 기본 제공 유형을 하위 클래스로 분류하는 기능이나 계산 된 속성을 활성화하는 "설명자"의 도입과 같은 여러 즉각적인 이점이 있습니다.
호환성을 위해 클래스는 기본적으로 여전히 구식 입니다.
새 스타일 클래스는 다른 새 스타일 클래스 (즉, 유형)를 부모 클래스로 지정하거나 다른 부모가 필요하지 않은 경우 "최상위 유형"개체를 지정하여 생성됩니다.
새로운 스타일 클래스의 동작은 반환되는 유형 외에도 여러 가지 중요한 세부 사항에서 이전 스타일 클래스의 동작과 다릅니다.
이러한 변경 사항 중 일부는 특수 메서드가 호출되는 방식과 같이 새 개체 모델의 기본입니다. 다른 것들은 다중 상속의 경우 메서드 해결 순서와 같이 호환성 문제를 위해 이전에 구현할 수 없었던 "수정"입니다.
Python 3에는 새로운 스타일의 클래스 만 있습니다 .
object
하위 클래스 여부에 관계없이 클래스는 Python 3에서 새로운 스타일입니다.
출처 : https://stackoverflow.com/questions/54867/what-is-the-difference-between-old-style-and-new-style-classes-in-python
'프로그래밍 언어 > Python' 카테고리의 다른 글
Suppress InsecureRequestWarning: Unverified HTTPS request is being made in Python2.6 (0) | 2021.11.08 |
---|---|
getter와 setter를 사용하는 파이썬적인 방법 (0) | 2021.11.08 |
파이썬 딕셔너리 'has_key ()' vs'in' (0) | 2021.11.05 |
클래스 JSON을 직렬화 가능하게 만드는 방법 (0) | 2021.11.05 |
파이썬에서 배열을 선언하는 방법 (0) | 2021.11.05 |