, 슈퍼 슈퍼 클래스의 슈퍼 클래스를 해결하기 위해 유형과 (결국) 인스턴스를 포장하는 클래스입니다, 지금까지 내가 본대로 다음과 같은 경우를 왜 python super는 인스턴스 만 허용하지 않습니까? 파이썬 2.X에서
class super(object)
| super(type) -> unbound super object
| super(type, obj) -> bound super object; requires isinstance(obj, type)
| super(type, type2) -> bound super object; requires issubclass(type2, type)
| Typical use to call a cooperative superclass method:
을 받아들입니다. 예를 들어, 일반적인 사용과 함께,
- 도 더
super(instance)
이없는 이유 :나는 몇 가지에 의해 다소 의아해 해요
super(self).__init__()
. 기술적으로 객체 자체에서 객체의 유형을 얻을 수 있으므로 현재 전략 인super(ClassType, self).__init__()
은 일종의 중복입니다. 예전 스타일의 클래스 또는 다중 상속과의 호환성 문제가 있다고 생각하지만 귀하의 요점을 듣고 싶습니다. - 왜 다른 한편으로는 python 3이 받아들입니다 (Understanding Python super() with __init__() methods 참조)
super().__init__()
? 나는 이것에 대한 어떤 종류의 마법을 본다. 암묵적인 선보다 암묵적인 것을 위반하는 것이 낫다. 나는 더 적절한 것으로 보았을 것이다self.super().__init__()
.
당신은 B 클래스 (A) : 그리고 C 클래스 (B) : –
을 의미한다고 생각합니다. 그러나 당신 말이 맞습니다. 메소드 B .__ init __()에서 self는 직접 슈퍼가 B가 아닌 C 타입이기 때문에 B에서 A .__ init __()을 호출 할 수 없습니다. 따라서 B .__ init __()가 다시 호출됩니다. –
아, 오타에 대해 고맙습니다. 감사합니다! 그리고 이것은 다중 상속 체계에서 훨씬 더 복잡해졌습니다. 그것에 관한 링크를 찾을 수있을 것 같습니다. – u0b34a0f6ae