python中的subtype是什么?
大家讲道理
大家讲道理 2017-04-17 17:50:46
0
1
687

T.__new__(S, ...) -> a new object with type S, a subtype of T

这里的subtype指的是什么?

class A(int):
    pass
    
class B(int):
    def __new__(cls):
        return A.__new__(int)
        
b = B()
isinstance(b, A)
#False
type(b)
#<class 'int'>
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(1)
Peter_Zhu

질문에 답하세요

subtype은 문자 그대로 子类입니다. issubclass(cls1, cls2)cls1의 하위 클래스인지 확인하려면 cls2을 사용하세요.

당신이 사용하고 있는

의 버전이 무엇인지, python이 가로채고 있는 문서가 무엇인지는 확실하지 않지만 공식 설명에 따르면 T.__new__(S, ...)X.__init__(Y, ...)의 인스턴스 객체를 생성할 뿐 아무런 관련이 없습니다. with Y . XX로 판단할 수 있는 __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, ...)Thello 속성을 ​​반환하는 것과 마찬가지로 self과 유사하며 관련이 없습니다. . name X

추가 지침

1.
함수만 더 자세히 설명하려면 내 글을 읽고 Ruby의 클래스를 이해하는 것이 좋습니다.

python2, 위 코드는

버전에서 검증이 되었으며,

약간 차이가 있습니다python3

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿