您的位置:首页 > 编程语言 > Python开发

python之函数的类的继承【进阶篇】

2018-03-14 13:29 465 查看
在面向对象的语言,继承是一个面向对象编程语言的特征,当我们需要一个新的类,与已经定义的类差别不大,我们可以直接继承的方法,定义一个子类,来提高效率。同时也不需要修改已经定义的类,继承可以不修改父类的情况下,添加新的功能,子类继承父类,子类就拥有父类的属性和方法,当然私有属性不会继承。子类也称为派生类,在不同语言中,继承又可以分为单继承和多继承。

单继承

下面的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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: