> 백엔드 개발 > 파이썬 튜토리얼 > Python 클래스 인스턴스화에서 `__init__()`가 `__new__()`를 따르지 않는 경우는 언제입니까?

Python 클래스 인스턴스화에서 `__init__()`가 `__new__()`를 따르지 않는 경우는 언제입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-14 14:35:15
원래의
786명이 탐색했습니다.

When Does `__init__()` Not Follow `__new__()` in Python Class Instantiation?

__new__() 및 __init__() 실행 순서 이해

Python의 __new__() 및 __init__() 메서드는 수업에서 중요한 역할을 합니다. 인스턴스화. __new__()는 클래스의 새 인스턴스를 생성하고 __init__()는 해당 인스턴스를 초기화합니다. 예상되는 실행 순서는 __init__() 이전에 __new__()가 호출되는 것입니다.

그러나 특정 시나리오에서는 이 순서를 변경할 수 있습니다. 사용자 정의 __new__() 메서드를 구현할 때 인스턴스 생성을 조작하고 새 인스턴스를 만드는 대신 기존 인스턴스를 반환할 수 있습니다. 이 동작은 플라이웨이트 디자인 패턴과 같은 패턴을 구현하는 데 활용됩니다.

이러한 경우 예상치 못한 일이더라도 __new__() 다음에 __init__()가 호출되는 것을 볼 수 있습니다. __init__()는 사용자 정의 __new__()가 기존 객체를 반환하지 않는 한 항상 __new__() 다음에 호출됩니다.

이 문제를 해결하려면 팩토리 함수를 사용하는 등 보다 일반적인 방식으로 원하는 기능을 구현하는 것이 좋습니다. 또는 사용자 정의 __new__() 메서드 내에 초기화 코드를 포함할 수 있습니다. 그러나 이 접근 방식은 "해킹"으로 간주될 수 있으므로 모범 사례로 권장되지 않습니다.

위 내용은 Python 클래스 인스턴스화에서 `__init__()`가 `__new__()`를 따르지 않는 경우는 언제입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿