Python的继承

# 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__)
# 如果在当前类中找到了方法,会直接执行,不在搜索
# 如果找到最后一个类还没有找到,会报错

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值