上一次说到了,什么是对象,对象是怎么来的,对象有哪些行为,那么既然有了对象,就相当于创建了一个人,那么正常的人,都会有后代,而且可能会有多个孩子,而孩子也会有自己孩子的时候,这个就是面向对象编程中的关于类的继承......

(开场白)

多继承问题的核心其实就是,搞清楚谁继承了谁的什么,

先上代码,

 1 class Person(object):
 2 
 3     def __init__(self, name, age):
 4         self.name = name
 5         self.age = age
 6         self.sex = 'normal'
 7 
 8     def talk(self):
 9         print('person is talking...')
10 
11 
12 class Blackperson(Person):
13     def __init__(self, name, age, strength):
14         self.strength = strength
15         Person.__init__(self,name,age)
View Code

黑人是人的一种,所以,人的属性,黑人是都有的,比如,人分男女,黑人也分男女,(我并不是人种歧视,只是举个例子)

说话是正常人的本能,那么说话也是黑人的本能,如果是聋哑人,也属于人的一种,也会继承人的属性,但是说话这一属性就需要重新定义, 讲其设置为不会说话,

这就是类的继承,再给补一个小知识点,是Python2和Python3的区别:

  python 2 : 深度查询
  python3 : 广度查询

什么意思呢,就是指,一个孩子的属性可能来自自己的父亲,也可能是母亲,当然也会是隔壁老王(这个例子不怎么恰当,先将就着理解),这样的话,这三者就会有一个先后顺序,Python2中的办法是,先去找父亲,然后去找爷爷,因为这个属性有可能是父亲继承爷爷的,而Python3的方法是,先去找父亲,然后找母亲,最后找老王,

最后再说个,继承的代码书写方法:

 1 class FooParent(object):
 2     def __init__(self):
 3         print ('Parent')
 4     def test(self):
 5         print ('foo parent')
 6 
 7 class FooChild(FooParent):
 8     def bar(self):
 9         self.test()
10         FooParent.test(self)
11         super(FooChild, self).test()
12 
13 # 这三种方法均可实现子类对父类方法的调用
View Code

这三种方法均可实现对父类的调用......

不过,个人推荐第三种,显得高端大气上档次

......

未完待续