그래서 저는 Python의 Super Concerned Harmful 을 따르고 그의 예제를 테스트했습니다.
그러나 다른 인수를 예상 하는 메서드를 처리 할 때 올바른 호출 방법을 보여주는 Example 1-3 은 flat-out이 작동하지 않습니다.super__init__
이것이 내가 얻는 것입니다.
~ $ python example1-3.py
MRO: ['E', 'C', 'A', 'D', 'B', 'object']
E arg= 10
C arg= 10
A
D arg= 10
B
Traceback (most recent call last):
File "Download/example1-3.py", line 27, in <module>
E(arg=10)
File "Download/example1-3.py", line 24, in __init__
super(E, self).__init__(arg, *args, **kwargs)
File "Download/example1-3.py", line 14, in __init__
super(C, self).__init__(arg, *args, **kwargs)
File "Download/example1-3.py", line 4, in __init__
super(A, self).__init__(*args, **kwargs)
File "Download/example1-3.py", line 19, in __init__
super(D, self).__init__(arg, *args, **kwargs)
File "Download/example1-3.py", line 9, in __init__
super(B, self).__init__(*args, **kwargs)
TypeError: object.__init__() takes no parameters
object자체적으로 문서에 언급 된 모범 사례 중 하나를 위반 하는 것 같습니다. 즉 , 사용하는 메서드 super는 *args및 **kwargs.
자, 분명히 Mr. Knight는 그의 예제가 작동하기를 기대했습니다. 그렇다면 이것이 최신 버전의 Python에서 변경된 것입니까? 2.6과 2.7을 확인했는데 둘 다 실패했습니다.
그렇다면이 문제를 해결하는 올바른 방법은 무엇입니까?
object호출하는지 확인 합니다. object__init__
__init__에 object자동으로 무시 파이썬 2.5에 매개 변수. 이것은 Python 2.6에서 변경되었습니다.