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

继承不是为了继承里面原来的属性和值么,不初始化的话,会有什么问题?

2015-04-04 源自:python进阶 5-17642 浏览2 回答

最佳回答

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

这是对继承自父类的属性进行初始化。而且是用父类的初始化方法来初始化继承的属性。

也就是说,子类继承了父类的所有属性和方法,父类属性自然会用父类方法来进行初始化。

当然,如果初始化的逻辑与父类的不同,不使用父类的方法,自己重新初始化也是可以的。

 Apalapucia
 回复  9
 

a412739861 (提问者)

谢谢,大致了解清楚了~

#12015-05-05 回复
Apalapucia
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的初始化只是简单的赋值,

但子类要求字母全部大写。

你可能感兴趣的:(super(Student,self).__init__()初始化的是什么东西?)