__new__() 및 __init__() 실행 순서 이해
Python의 __new__() 및 __init__() 메서드는 수업에서 중요한 역할을 합니다. 인스턴스화. __new__()는 클래스의 새 인스턴스를 생성하고 __init__()는 해당 인스턴스를 초기화합니다. 예상되는 실행 순서는 __init__() 이전에 __new__()가 호출되는 것입니다.
그러나 특정 시나리오에서는 이 순서를 변경할 수 있습니다. 사용자 정의 __new__() 메서드를 구현할 때 인스턴스 생성을 조작하고 새 인스턴스를 만드는 대신 기존 인스턴스를 반환할 수 있습니다. 이 동작은 플라이웨이트 디자인 패턴과 같은 패턴을 구현하는 데 활용됩니다.
이러한 경우 예상치 못한 일이더라도 __new__() 다음에 __init__()가 호출되는 것을 볼 수 있습니다. __init__()는 사용자 정의 __new__()가 기존 객체를 반환하지 않는 한 항상 __new__() 다음에 호출됩니다.
이 문제를 해결하려면 팩토리 함수를 사용하는 등 보다 일반적인 방식으로 원하는 기능을 구현하는 것이 좋습니다. 또는 사용자 정의 __new__() 메서드 내에 초기화 코드를 포함할 수 있습니다. 그러나 이 접근 방식은 "해킹"으로 간주될 수 있으므로 모범 사례로 권장되지 않습니다.
위 내용은 Python 클래스 인스턴스화에서 `__init__()`가 `__new__()`를 따르지 않는 경우는 언제입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!