面向对象中的继承就是继承的类直接拥有被继承类的属性而不需要在自己的类体中重新再写一遍,其中被继承的类叫做父类、基类,继承的类叫做派生类、子类。在python3中如果不指定继承哪个类,默认就会继承Object类,而继承了Object类的类就叫做新式类,而在python2中如果不指定继承哪个类也不会默认去继承Object类,而没有继承Object类的类就叫做经典类。经典类和新式类的不同就在于对方法的搜索顺序不同,经典类是深度优先即先找自己类内,如果没有就找左边第一个父类,没找到继续从这个父类的父类中找依次类推直到找到最上一级的父类也没找到再找左边第二个父类,然后再重复之前的过程,直到所有父类找一遍没找到就报错;而新式类是广度优先,当下一个类可以通过其他类找到时就先不去找它,而是找继承关系中与它的子类同级的其他类,依次类推直到最后找到object类没有找到指定方法就报错。

继承的语法

在定义一个类的时候我们用 class 名称: 来定义,里面省略了(object),所以定义一个继承类的时候就可以用:class类型(被继承的类型): 的语法

其中被继承的类型被称为——父类,父类并不能使用子类中的所有属性和方法

这个新类型就被称为——子类,子类可以拥有父类的所有共有属性和方法,并且可以定义自己新的属性和方法,这些自己的属性方法不论是否私有,都不能被父类使用。

重写父类中的方法:就是在子类中重新定义一个和父类同名的方法,在通过子类创建对象调用该方法时,其实是调用子类中的方法,而不是弗雷总得方法

如果要调用父类中的方法则需要使用super操作

class Fu:

def __init__(self):

self.house = "5套房子"

self.gold = "2箱黄金"

def run_company(self):

print("运营公司...")

class Zi(Fu):

def run_company(self):

print("每个班级放两个程序猿鼓励师..")

print("运营公司...")

def call_super(self):

# 调用父类中被重写的方法

super().run_company()

# 创建子类对象

zi = Zi()

# 通过子类对象调用重写后的方法:调用的是子类中重写后的方法,不是父类中的方法

# zi.run_company()

zi.call_super()##这个是通过在子类中定义一个新的方法来调用父类中的方法

也可以在子类中写属于子类自己的方法,这些方法可直接通过子类的对象直接调用,如下:

class Zi(Fu):

def find_girl(self):

print("找一个网红的女朋友...")

self.girl_friend = "网红小姐姐"

def play_game(self):

print("玩游戏....")

# 创建子类对象

zi = Zi()

#调用子类中自己的方法

zi.find_gir()

zi.play_game()

“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。"

相关文章