# 1.继承
# 就是让类和类之间转变为父子关系,子类默认继承父类的属性和方法
# 1.1 语法
# class 类名(父类名):
# 代码块
# 1.2 单继承
# class Person:
# def eat(self):
# print("吃")
# def drink(self):
# print('喝')
# def play(self):
# print('玩')
# def enjoy(self):
# print('乐')
# class Man(Person): #Person类的子类
# pass #占位符,代码里面类不写任何东西,会自动跳过,不会报错
# man=Man()
# man.play()
# class Woman(Person):
# pass
# woman=Woman()
# woman.play()
# 总结:子类可以继承父类的属性和方法,就算子类没有,也可以使用父类的
# 1.3 继承的传递
# A/B/C C(子类)继承B(父类),B(子类)继承A(父类),C类具有A/B类的属性和方法
# class Grandfather:
# def money(self):
# print('钱')
# def cash(self):
# print('现金')
# def fund(self):
# print('基金')
# def coppercoin(self):
# print('硬币')
# class Father(Grandfather):
# def salary(self):
# print('薪水')
# def wage(self):
# print('工资')
# def pay(self):
# print('支付')
# class Son(Father):
# def earning(self):
# print('收入')
# son=Son()
# son.fund()
# son.money()
# 继承的传递性子类拥有父类和父类的父类的属性和方法
# 1.4 方法的重写 子类和父类的方法名称相同,优先调用自己的方法
# 1.4.1 覆盖父类方法
# class Clothes:
# def dress(self):
# print('所有衣服')
# class Tshirt(Clothes):
# def dress(self):
# print('短袖')
# t=Tshirt()
# t.dress()
# 1.4.2 对父类方法进行拓展,继承父类的方法,子类也可以增加自己的功能
# 1.父类名.方法名(self)
# 2.super().方法名() ---推荐使用
# super在python里面是一个特殊的类:super() 使用super类创建出来的对象,可以调用父类的方法
# 3.super(子类名,self).方法名()
# class Clothes:
# def dress(self):
# print('所有衣服')
# def pants(self):
# print('内裤')
# def trousers(self):
# print('裤子')
# class Tshirt(Clothes):
# def dress(self):
# # Clothes.dress(self) 第一种方法
# super().dress() #第二种方法
# super().trousers() #可以调用父类中的其他方法
# super(Tshirt,self).dress()
# print('短袖')
# t=Tshirt()
# t.dress()
# 2.新式类写法
# class A: 经典类:不由任意内置类型派生出的类
# pass
class Animal:
def jump(self):
print('跳')
class Pig(Animal):
name='yzh' #属性
def fight(self):
print('打架')
# pass 不是派生类
# 派生类 子类有不同于父类的属性和方法,就是派生类,否则则不是派生类
# 2.2 class A():
# 2.3 class A(object) 新式类:继承了object类或者该类的子类都是新式类,---推荐使用
# object ---对象,python为所有对象提供的基类(顶级父类),提供了一些内置属性和方法,可以使用dir()查看
print(dir(object))
# python3中如果一个没有继承任何类,则默认继承object类,因此python3都是新式类
# 3.多继承
# 子类可以拥有多个父类,并且拥有所有父类的属性和方法
class Father1(object):
def money(self):
print('马斯克的资产')
class Father2(object):
def house(self):
print('深圳湾1号')
class Father3(object):
def car(self):
print('奥迪A8霍希版')
class Son(Father2,Father3,Father1):
pass
son=Son()
son.car()
son.house()
son.money()
# 有多个父类的属性和方法,如果多个父类的方法名称相同,会调用近的方法,就近原则
# 3.3 方法的搜索顺序(了解)
# python中的内置属性__mro__可以查看方法的搜索顺序 从左往右的顺序
print(Son.__mro__)
# 如果在当前类中找到了方法,会直接执行,不在搜索
# 如果找到最后一个类还没有找到,会报错