는 __new__
의 몸 안에 당신이하지 반환을 (그렇지 않으면 기본, 메타 또는) __new__
의 클래스의 버전을 다른 호출의 결과를 할 것을 파이썬 등의 __new__
를 사용하는 예를 무엇입니까,하지만 당신은 반환을 __init__
이 호출되도록 의도 된 클래스의 인스턴스를 할당 했습니까?파이썬 __new__ 다른 클래스의 버전을 호출하지 않고 __new__?
매우 드물기는하지만,이 유스 케이스의 예가 있으면 궁금합니다. 나는 의 tuple
의 구현과 심지어 type
의 구현에 대한 Python 소스를 검색해 보았습니다. 그러나 이것은 온라인에서 쉽게 찾을 수있는 것처럼 보이지 않았습니다.
"할당 된 인스턴스"는 무엇을 의미합니까? '__new__'을 사용하여 같은 클래스의 기존 인스턴스를 반환하는 [Singleton] (http://stackoverflow.com/a/1810367/1427416)과 같은 것들이 있지만 초기 인스턴스를 생성하는 데 여전히'__new__'가 사용됩니다 , 그리고 __init__를 다시 부르는 것은 틀림없이 거기에서도 바람직하지 않다 (비록 그 예에서 일어난다). 어떤 시점에서 내장 객체'.__ new__'를 활용하지 않고 사용자 정의 클래스의 실제 새로운 인스턴스를 생성 할 방법이 없습니다. 'tuple'과'type'은 C에서 구현되어서 실제로'__new__'와 같은 API를 사용하지 않습니다. – BrenBarn
"할당 된 인스턴스"는 단지'__new__'이 반환하는 것을 의미합니다. '__new__ '다른 것을 바닥에 두지 않고 어떻게 새로운 일을 만들어 낼 수 있습니까? 아니면 잘못된 질문입니까? – ely
수 없습니다. 다른 클래스의 '__new__'을 호출하거나 다른 클래스/타입을 호출하여 객체를 생성해야합니다.이 객체는 해당 클래스의'__new__ '을 호출합니다. – BrenBarn