subtype은 문자 그대로 子类입니다. issubclass(cls1, cls2)이 cls1의 하위 클래스인지 확인하려면 cls2을 사용하세요.
당신이 사용하고 있는
의 버전이 무엇인지, python이 가로채고 있는 문서가 무엇인지는 확실하지 않지만 공식 설명에 따르면 T.__new__(S, ...)는 X.__init__(Y, ...)의 인스턴스 객체를 생성할 뿐 아무런 관련이 없습니다. with Y . X에 X로 판단할 수 있는 __new__ 속성이 있다는 것이 전제입니다.
hasattr(X, '__new__')
심층탐색
사실 여기서 초점은
이 아니라
속성이 무엇인지에 있습니다.subtype__new__간단히 말하면
는 객체 생성을 제어하고,
는 객체 초기화(추가 속성 변수 추가 등)를 제어하며, __new__는 객체 소멸을 제어합니다. 신경쓰다 __init__ .__del____init__질문을 생각해 보세요.
과 같은 표준 개체 인스턴스화 프로세스가 반드시
개체를 생성합니까?n = N()N물론 대답은 '아니요'입니다. 객체 생성과 객체 초기화의 차이점을 자세히 설명하기 위해 코드는 다음과 같습니다.
으아악
이 개체를 반환하면 생성 후 초기화를 위해 개체와 추가 매개변수가 개체의
에 전달됩니다.__new____init__
기능 소개
한 단계 더 나아가
의
매개변수는 무엇인가요?__new__
으아악
cls이것은
의 또 다른 필수 기능과 관련이 있습니다. 즉,
에는 메서드가 없고 기능만 있습니다. python을 실행할 때 실제로는 python을 먼저 실행한 다음 P()을 실행합니다.p1 = P.__new__(P)
으아악
P.__init__(p1)요약하자면
은
과 아무 관련이 없습니다. T.__new__(S, ...)가 T의 hello 속성을 반환하는 것과 마찬가지로 self과 유사하며 관련이 없습니다. . nameX
당신이 사용하고 있는subtype
은 문자 그대로子类
입니다.issubclass(cls1, cls2)
이cls1
의 하위 클래스인지 확인하려면cls2
을 사용하세요.의 버전이 무엇인지,
심층탐색 이 아니라python
이 가로채고 있는 문서가 무엇인지는 확실하지 않지만 공식 설명에 따르면T.__new__(S, ...)
는X.__init__(Y, ...)
의 인스턴스 객체를 생성할 뿐 아무런 관련이 없습니다. withY
.X
에X
로 판단할 수 있는__new__
속성이 있다는 것이 전제입니다.hasattr(X, '__new__')
속성이 무엇인지에 있습니다.
는 객체 생성을 제어하고,subtype
__new__
간단히 말하면는 객체 초기화(추가 속성 변수 추가 등)를 제어하며,
과 같은 표준 개체 인스턴스화 프로세스가 반드시__new__
는 객체 소멸을 제어합니다. 신경쓰다__init__
.__del__
__init__
질문을 생각해 보세요.개체를 생성합니까?
으아악 이 개체를 반환하면 생성 후 초기화를 위해 개체와 추가 매개변수가 개체의n = N()
N
물론 대답은 '아니요'입니다. 객체 생성과 객체 초기화의 차이점을 자세히 설명하기 위해 코드는 다음과 같습니다.에 전달됩니다.
기능 소개 의__new__
__init__
매개변수는 무엇인가요?
의 또 다른 필수 기능과 관련이 있습니다. 즉,__new__
으아악cls
이것은에는 메서드가 없고 기능만 있습니다.
은python
을 실행할 때 실제로는python
을 먼저 실행한 다음P()
을 실행합니다.p1 = P.__new__(P)
으아악P.__init__(p1)
요약하자면과 아무 관련이 없습니다.
추가 지침 함수만 더 자세히 설명하려면 내 글을 읽고 Ruby의 클래스를 이해하는 것이 좋습니다.T.__new__(S, ...)
가T
의hello
속성을 반환하는 것과 마찬가지로self
과 유사하며 관련이 없습니다. .name
X
python
2, 위 코드는약간 차이가 있습니다
python3