python之函数的类的继承【进阶篇】
2018-03-14 13:29
465 查看
在面向对象的语言,继承是一个面向对象编程语言的特征,当我们需要一个新的类,与已经定义的类差别不大,我们可以直接继承的方法,定义一个子类,来提高效率。同时也不需要修改已经定义的类,继承可以不修改父类的情况下,添加新的功能,子类继承父类,子类就拥有父类的属性和方法,当然私有属性不会继承。子类也称为派生类,在不同语言中,继承又可以分为单继承和多继承。
在子类中,自己定义的方法是不能访问父类的私有属性的。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
如果一个方法前面有两个下划线,就是一个私有的方法。只能在类中重新定义的方法,用这个方法调用这个私有方法。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
单继承
下面的Animal这个类中,Dog这个类并没有init这个初始化方法,通继承得到init这个初始化方法;子类可以通过继承的方式访问父类的私有属性;在子类中,自己定义的方法是不能访问父类的私有属性的。
class Animal(object): #初始化 def __init__(self,name,color): self.name = name self.color = color def __del__(self): print('对象销毁----') # 子类 class Dog(Animal): def printIF(self): print(self.color) print(self.name) wangcai=Dog('wangcai','white') wangcai.printIF()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
如果一个方法前面有两个下划线,就是一个私有的方法。只能在类中重新定义的方法,用这个方法调用这个私有方法。
class Animal(object): #初始化 def __init__(self,name,color): self._name = name self.color = color def __del__(self): print('对象销毁----') def test1(self): print(self._name) # 子类 class Dog(Animal): def printIF(self): print(self.color) print(self.name) wangcai=Dog('wangcai','white') wangcai.printIF() wangcai.test1()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
重写父类的方法
所谓重写就是在子类中,有一个和父类相同的方法。子类的方法会覆盖父类的方法。class Animal(object): #初始化 def bar(self): print('啊啊----') # 子类 class Cat(Animal): #在子类中重写编写父类的方法就叫重写 def bar(self): #调用父类方法 Animal.bar() print('喵喵---') TomCat = Cat() TomCat.bar()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
多继承
其实PYTHON是支持多继承的,多继承是一个类可以有多个父类,当子类调用方法,子类中没有,会先去自己的方法中去找,如果没有,就从父类优先继承的那个类中,在从父类的兄弟类中找,如果没有,在往上一级父类中去找该方法。下图代码可以演示这个问题。class Base(object): def test(self): print('-------BASE------') class A(Base): def test(self): print('-------A------') class B(Base): def test(self): print('-------B------') class C(A,B): def a(self): print('addd') c = C() c.test()
相关文章推荐
- python基础----多态与多态性、super函数用法、继承原理
- python之函数的定义【进阶篇】
- python之函数的面向对象【进阶篇】
- 基于python的-类的继承与函数的重写
- python继承中重载问题:私有函数不能被子类重写
- python之函数的类的内置方法【进阶篇】
- Python-7 多继承函数调用注意点
- python学习笔记6.4-类的多重继承(super()函数)
- 关于Python中的类普通继承与super函数继承
- python继承中重载问题:私有函数不能被子类重写
- python学习第十六天 --继承进阶篇
- 关于Python中的类普通继承与super函数继承
- python--基础学习(二)判断 、循环、定义函数、继承、调用
- python之函数的返回值【进阶篇】
- python之函数的类的方法【进阶篇】
- python之函数的递归【进阶篇】
- python之函数的多类型传值和冗余参数【进阶篇】
- [Python]学习基础篇:函数的进阶篇
- python之函数的参数【进阶篇】
- python双下划线含义、MethodType把函数变为方法以及类继承