第109课时: 类; 继承
继承:
继承是 代码复用 的重要手段。
一个新设计好的 类 继承自一个之前 已经设计好的类 就直接具备之前类的特征, 大大降低了难度。
已有的类:
父类 基类。
新的类:
子类、派生类。
语法格式:
继承格式:
Class 子类名称(父类1【,父类2.。。】)
类体
一个子类可以有多个直接的父类。
定义子类属性时,必须在其构造函数中调用父类的构造函数。
调用格式如下:
父类名.init(self,参数列表)
测试:
class man:
def __init__(self,name,age):
self.__name= name
self.__age= age
def say_age(self):
print('年龄是',self.__age)
class student(man):
def __init__(self,name,age,score):
man.__init__(self,name,age)
self.score= score
def get_score(self):
print(self.score)
s = student('wlz',18,100)
s.say_age()
s.get_score()
年龄是 18
100
Man 是父类, student 是子类。 可以看到该有的都有
可以直接调用父类的方法。
class student(man):
def __init__(self,name,age,score):
man.__init__(self,name,age)
self.score = score
这一段是定义子类属性,
**man.__init__(self,name,age)**
这句话是直接调用父类属性的定义。
self.score = score
是 定义子类特有的属性。
测试 调用 私有对象:
class man:
def __init__(self,name,age):
self.__name= name
self.__age= age
def say_age(self):
print('年龄是',self.__age)
class student(man):
def __init__(self,name,age,score):
man.__init__(self,name,age)
self.score= score
def get_score(self):
print(self.score)
s = student('wlz',18,100)
print(s._student__age)
出错
由于 age 是在 man 父对象 中定义的私有属性,所以age是调用不了的。
调用父类的私有属性,必须加上父类名称。
class man:
def __init__(self,name,age):
self.__name= name
self.__age= age
def say_age(self):
print('年龄是',self.__age)
class student(man):
def __init__(self,name,age,score):
man.__init__(self,name,age)
self.score= score
def get_score(self):
print(self.score)
s = student('wlz',18,100)
print(s._man__age)
18
这样就正确了。