python - 面向对象编程的三大特征之一 - 继承
什么是继承?
当几个类对象中有共同的属性的方法时,就可以把这些属性和方法抽象并提取到一个基类中。
每个类特有的属性和方法还是在本类对象中定义。
只需要让每个类对象都继承这个基类,就可以访问基类中的属性和方法了。
为什么要继承?
看下面例子,熊猫具有吃、喝以及爬行的功能,
鸟具有吃、喝以及飞行的功能,
class Panda(object):
def eat(self):
print("吃")
def drink(self):
print("喝")
def creeper(self):
print("爬行")
class Bird(object):
def eat(self):
print("吃")
def drink(self):
print("喝")
def fly(self):
print("飞行")
eat() 和 drink()这两个方法完全一样,可以把这两个方法抽取出来放在一个基类 Animal (动物类)中,
熊猫 Panda 类和鸟 Bird 类中继承基类 Animal (动物类),这样就达到优化代码的目的。
class Animal(object):
def eat(self):
print("吃")
def drink(self):
print("喝")
class Panda(Animal): # 继承 Animal (动物类)
# 熊猫独有的功能 爬行 还是写在 Panda 类中,其他两个功能继承 Animal (动物类)即可
def creeper(self):
print("爬行")
class Bird(Animal): # 继承 Animal (动物类)
def fly(self):
print("飞行")
res = Panda() # 直接实例化 Panda 熊猫类
res.eat() # 吃,继承了 Animal (动物类)吃的方法
构造函数的继承语法:
父类名称.__init__(self,参数1,参数2,...)
子类在调用某个方法或变量的时候,首先在自己内部查找,
如果没有找到,则开始根据继承机制在父类里查找。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("说话")
class Student(Person):
def __init__(self, name, age, grade): # 先继承,再重构
Person.__init__(self, name, age) # 调用父类的实例化方法,继承父类的构造方法。
"""
self 相当于实例 Student
实例 Student 的时候,执行 __init__ ,然后实例 Person
"""
self.grade = grade # 定义类的本身属性
def speak(self):
print(" {} 说,我 {} 岁了,正在读 {} 年级!" .format(self.name, self.age, self.grade))
res = Student("tom", 10, 5)
res.speak() # tom 说,我 10 岁了,正在读 5 年级!
super()函数
语法:
super(子类,self).__init__(参数1,参数2,....)
在子类中如果有与父类同名的成员,那就会覆盖掉父类里的成员。
那如果你想强制调用父类的成员呢?使用super()函数
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("说话")
class Student(Person):
def __init__(self, name, age, grade): # 先继承,再重构
super(Student, self).__init__(name, age)
self.grade = grade # 定义类的本身属性
def speak(self):
print(" {} 说,我 {} 岁了,正在读 {} 年级!" .format(self.name, self.age, self.grade))
res = Student("tom", 10, 6)
res.speak() # tom 说,我 10 岁了,正在读 6 年级!
------分界线------
互联网人员的产品观
工作中多想想
用户从哪里来的,
产品怎么推广,
产品怎么获利,
公司的钱从哪里来的,
bug很大一部分就是开发跟产品、测试对需求理解不一致造成,
各职人员合理理解产品需求,沟通成本降低,效率翻倍,
互联网的本质是什么 - 赚钱,
所以有空的时候想想你们公司怎么赚钱的对你肯定百利无一害,