2014-10-18 77 views
0

我有這些類。 人是父類和學生是子類:python 2.7 __init __()只需要2個參數(3給出)

#Person class 
class person(object): 
    def __init__(self, name): 
     self.name = name 
    def pr(self): 
     print "I'm " + self.name 

#Student class 
from personClass import person 
class student(person): 
    def __init__(self, avr, name): 
     self.avr = avr 
     super(student, self).__init__(self, name) 
    def pr(self): 
     super(student, self).pr(self) 
     print "My avrage is " + str(self.avr) + "\n" 

我得到第17行這個錯誤,當我試圖讓我的類的實例初始化()到底需要2個參數(3給出)和 人。 init(self,name)正常工作。 我的代碼有什麼問題,如何在python 2.7中使用super?

+0

你是如何創建一個對象? – thefourtheye 2014-10-18 07:41:30

回答

5

如果您使用super,則不會將self傳遞給目標方法。它被隱式傳遞。

super(student, self).__init__(name) 

這是2個參數總數(自我,名字)。當你通過self,這是3總(自我,自我,名字)。

+0

是的。自我出現在方法參數中,但在調用方法時實際上並未放入。 – user1269942 2014-10-18 07:48:52

0

您可以使用

super(Student, self).__init__(name) 

在自我已經傳給初始化方法,所以你不需要它初始化方法再次寫出來的。 但是如果你使用

super(Student, Student).__init__(self, name) 

super(Student, self.__class__).__init__(self, name) 

,你必須寫下自己在初始化方法。

相關問題