Bu yüzden Python'un Süper Zararlı Olarak Düşünülmesini takip ediyordum ve örneklerini test etmeye gittim.
Ancak, farklı argümanlar bekleyen yöntemleri işlerken doğru arama yöntemini göstermesi beklenen Örnek 1-3 , düz çıkış çalışmaz.super__init__
Bu benim aldığım:
~ $ 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
O görünüyor objectkendisi yöntemlerin hangi kullanım olmasıdır belgede, belirtilen en iyi uygulamaların birini ihlal superkabul etmelidir *argsve **kwargs.
Şimdi, belli ki Bay Knight, örneklerinin işe yaramasını bekliyordu, peki bu Python'un son sürümlerinde değişen bir şey mi? 2.6 ve 2.7'yi kontrol ettim ve her ikisinde de başarısız.
Peki bu problemle başa çıkmanın doğru yolu nedir?