python 面向对象—4大特征

本文介绍了面向对象编程的基本概念,包括抽象、封装、继承、多态等核心内容,并详细解释了Python中如何实现这些概念,如私有属性和方法的设置及访问方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 1.抽象
    • 数据抽象 -->表示世界中一类事物的特征,就是对象的属性.比如鸟有翅膀,羽毛等(类的属性)
    • 过程抽象 -->表示世界中一类事物的行为,就是对象的行为.比如鸟会飞,会叫(类的方法)
  • 2.封装
    • 面向对象的程序设计中,某个类把所需要的数据(也可以说是类的属性)和对数据的操作(也可以说是类的行为)全部都封装在类中
    • 分别称为类的成员变量和方法(或成员函数)。这种把成员变量和成员函数封装在一起的编程特性称为封装。
    • 1.私有化属性
      • Python中,以两个下划线‘__’开头的属性都是私有属性
      • 私有属性只能在类的内部访问,外界不能通过类名(对象).__属性访问
      • 外界修改类中私有属性值
        • class 类名:
          • def set_name(self,name):
          •     self.__name=name
        • 对象.set_name("张三")
      • 外界访问私有属性值
        • class 类名:
          • def get_name(self):
            • return self.__name
        • print(对象.get_name())
    • 2.私有化方法
      • Python中,以两个下划线‘__’开头的属性都是私有方法
      • 私有方法只能在类的内部访问,外界不能通过类名(对象).__属性访问
  • 3.继承
    • 在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物;
    • 同理,波斯猫和巴厘猫都继承自猫,而沙皮狗和斑点狗都继承狗
    • 子类在继承的时候,在定义类时,小括号()中为父类的名字,能做到代码复用
    • 父类的属性、方法,会被继承给子类
    • 注意:私有属性(私有类属性)和私有方法不被继承。
    • class 子类(父类):
      • 类体
    • 继承多个父类  class 子类(父类1,父类2.。。)
    • 多层继承   class A: class B(A) class C(B)
    • 1.方法重写
      • 如果子类和父类有相同的属性名和方法名,当调用的时候用的是子类的方法名和属性名
      • 当子类想使用父类的同名方法和同名类属性时 (不适用于对象属性)
        • 1. 父类.方法名(self,参数)   父类.属性
        • 2. super().方法名(参数) 不需要self  super().属性
        • 3. super(子类,self).方法名(参数)   super(子类,self).属性
      • 2.多继承同名方法调用顺序
        • class A  class B(A)  class C(A)   class D(B,C)
        • python3 新式类  搜索方法顺序  D-B-C-A 广度优先
        • python2 旧式类(经典类)  搜索方法顺序  D-B-A-C 深度优先
  • 4.多态
    • 所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态。
    • 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。
  • 5.特殊方法
    • 类名.__mro__  搜索方法的顺序 (python3新式类)
    • import inspect   inspect.getmro(类)    搜索方法的顺序 (python2经典类)
    • 类名.__bases__  所有父类
    • 类名.__base__   第一个父类
    • 对象.__class__  对象是由哪个类创建出来的
    • isinstance(对象,类) 判断对象是否由这个类创建出来的
  • 6.新式类和经典类(旧式类)的区别
    •                 type(实例对象)              类.__class__                 MRO基类搜索顺序算法
    • 新式类   <class '__mian__.类'>    <class '__mian__.类'>          C3 广度优先
    • 经典类    <type 'instance'>           __mian__.类                       深度优先
    • 新式类 相同父类只执行一次构造函数,经典类重复执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值