2017-07-30 26 views
1

這是我的代碼:如何在子類中添加實例屬性?

class Person: 
    def __init__(self, name): 
     self.name = name 


class Student(Person): 

    def register(self, school): 
     pass 
    def payfee(self, money): 
     pass 
    def chooseClassAndGrand(self, obj): 
     pass 

class Teacher(Person): 
    pass 

我想一個class實例屬性添加到Student類,如何使用,在學生類的代碼做的,如果我不希望重寫__init__()方法?

+2

你並不需要重寫初始化。你在init中調用超類'init,然後聲明你的實例變量。 –

+0

'class'是一個保留關鍵字,會拋出錯誤。你需要爲屬性 – Ronnie

+0

@Ronnie是啊,我使用'classAndGrade' – 244boy

回答

2

您不需要重寫__init__。假設你想Person__init__功能創建的Student實例時被調用,您可以使用super關鍵字Student__init__函數內部:

class Student(Person): 
    def __init__(self): 
     super().__init__() # python3.0+ 
     self.classAndGrade = ... 

    ... 

如果你在蟒蛇< 3.0,你可以使用

super(Person, self).__init__() 

這是最簡單的方法。

+0

我的'Person'類是Classic類,不能使用'super()',它會報告·'TypeError:必須是類型,而不是classobj'錯誤 – 244boy

+0

@ 244boy第二種技術可能工作 –

0

不要添加到COLDSPEED,你也可以用下面的添加屬性:

class Student(Person): 
    def __init__(self, name, classAndGrade): 
     Person.__init__(self, name) 
     self.classAndGrade = classAndGrade 

    ... 
相關問題