首页 Python基础入门视频教程 Python三大特性:资源的覆盖或累加
pay pay

Python三大特性:资源的覆盖或累加

日期: 二月 14, 2023, 8:55 a.m.
阅读: 376
作者: Python自学网-村长

摘要: 面向对象-三大特性-资源的覆盖或累加

00:00 / 16:00
1x
2x
1.5x
1.25x
1x
0.8x
0.5x
>
面向对象
    1. 第1课:Python面向对象程序设计
      16分钟
    2. 第2课:类属性和对象属性
      16分钟
    3. 第3课:类属性和对象属性操作本质对比
      16分钟
    4. 第4课:类属性和对象属的区别和使用对比
      16分钟
    5. 第5课:Python类方法的创建
      16分钟
    6. 第6课:实例方法,类方法和静态方法
      16分钟
    7. 第7课:三种方法访问权限对比
      16分钟
    8. 第8课:面向对象基础-元类
      16分钟
    9. 第9课:类属性,私有化属性,受保护属性的访问区别
      16分钟
    10. 第10课:面向对象-属性-私有化属性
      16分钟
    11. 第11课:面向对象-属性-只读属性
      16分钟
    12. 第12课:property操作只读属性
      16分钟
    13. 第13课:属性安全补充
      16分钟
    14. 第14课:内置属性
      16分钟
    15. 第15课:类属性,实例属性,初始化属性
      16分钟
    16. 第16课:面向对象-方法-方法回顾
      16分钟
    17. 第17课:内置特殊方法-对象信息重写
      16分钟
    18. 第18课:内置特殊方法-调用
      16分钟
    19. 第19课:内置特殊方法-索引操作
      16分钟
    20. 第20课:内置特殊方法-切片
      16分钟
    21. 第21课:内置特殊方法-对象比较
      16分钟
    22. 第22课:内置特殊方法-上下文环境的布尔值
      16分钟
    23. 第23课:内置特殊方法-迭代和遍历
      16分钟
    24. 第24课:内置特殊方法-描述器
      16分钟
    25. 第25课:内置特殊方法-装饰器
      16分钟
    26. 第26课:内置特殊方法-对象生命周期
      16分钟
    27. 第27课:内置特殊方法-面向对象小结案例
      16分钟
    28. 第28课:三大特性-继承和继承关系
      16分钟
    29. 第29课:三大特性-资源的继承和使用
      16分钟
    30. 第30课:三大特性-资源的覆盖或累加
      16分钟
    31. 第31课:三大特性-多态
      16分钟
    32. 第32课:面向对象-抽象类
      16分钟

面向对象-三大特性-资源的覆盖或累加。

# 2.覆盖(重写):子类和父类拥有同样的属性或方法,子类的优先级高会覆盖父类的属性或方法,主要是根据继承关系来确定优先级
class Person:
    name = 'jerry'

    def run(self):
        print('跑起来')


class man(Person):
    name = 'Tom'  # 属性覆盖

    # def run(self):  # 方法重写
    #     print('跑的很快')


m = man()
print(m.name)
m.run()
# 3.累加:在父类的基础上子类额外增加的属性或方法,或者在子类方法相对于父类同样方法进行功能扩展
# 累加:1.直接新增方法和属性,2.在父类方法上新增一些功能
class Person:
    name = 'jerry'
    def __init__(self):
        self.age = 19

    def run(self):
        print('跑起来')

    @classmethod
    def eat(cls):
        print('吃饭啦')

    @staticmethod
    def sleep():
        print('睡觉了')


class Man(Person):
    name = 'Tom'
    def __init__(self):
        self.sex = 'man'

    def run(self):
        print('跑的很快')

    @classmethod
    def eat(cls):
        print('吃你的吧')

    @staticmethod
    def sleep():
        print('快点做梦')
    pass


m = Man()
# 子类和子类对象可以使用父类中的所有方法
# m.run()
# m.eat()
# m.sleep()
# Man.run(m)  # 这里必须传入子类实例化的对象
# Man.eat()
# Man.sleep()
# 如果子类中也有和父类相对应的方法和属性的时候,调用时优先使用子类中的方法和属性
m.run()
m.eat()
m.sleep()
Man.run(m)
Man.eat()
Man.sleep()
# 如果子类中没有属性和初始化属性的时候,直接使用子类是没办法使用父类中的初始化方法的
# print(Man.age)  # AttributeError: type object 'Man' has no attribute 'age'
# print(m.age)  # AttributeError: 'Man' object has no attribute 'age'
# 解决方法1
class Man(Person):
    def __init__(self):
        Person.__init__(self)  # 使用父类调用父类中的初始化方法,但是后期维护父类名称不能不懂,而且菱形多继承时可能发生属性重复
        self.sex = 'man'


# 解决方法2
class Man(Person):
    def __init__(self):
        super().__init__()
        self.sex = 'man'

 

原创视频,版权所有,未经允许,切勿转载,违者必究!
回顶部