super(Student,self).__init__()初始化的是什么東西?


繼承不是為了繼承里面原來的屬性和值么,不初始化的話,會有什么問題?

2015-04-04源自:python進階 5-17642 瀏覽2 回答

最佳回答

2015-05-05
1
super (Student, self ).__init__()

這是對繼承自父類的屬性進行初始化。而且是用父類的初始化方法來初始化繼承的屬性。

也就是說,子類繼承了父類的所有屬性和方法,父類屬性自然會用父類方法來進行初始化。

當然,如果初始化的邏輯與父類的不同,不使用父類的方法,自己重新初始化也是可以的。

 回復  9
 

a412739861 (提問者)

謝謝,大致了解清楚了~

#12015-05-05 回復
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
class  Person( object ):
     def  __init__( self ,name,gender,age):
         self .name  =  name
         self .gender  =  gender
         self .age  =  age
 
class  Student(Person):
     def  __init__( self ,name,gender,age,school,score):
         #super(Student,self).__init__(name,gender,age)
         self .name  =  name.upper()  
         self .gender  =  gender.upper()
         self .school  =  school
         self .score  =  score
 
=  Student( 'Alice' , 'female' , 18 , 'Middle school' , 87 )
print  s.school
print  s.name

例如這樣,父類對name和gender的初始化只是簡單的賦值,

但子類要求字母全部大寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM