首页 > 编程语言 > 详细

python基础 面向对象编程

时间:2019-11-28 11:11:00      阅读:68      评论:0      收藏:0      [点我收藏+]

面向对象编程

1.什么是面向对象编程?

面向过程编程思想

核心是 过程 二字, 过程指的是解决问题的步骤,即先干什么再干什么
基于该编程思想编写程序,就好比在设计一条工厂流水线,一种机械式的思维方式。

面向过程编程优缺点:

优点:
将复杂的问题流程化,进而简单化

缺点:
牵一发而动全身,可扩展性差

面向对象编程思想

核心是 对象 二字,对象指的是 特征(属性/变量)与技能(方法/函数)的结合体。基于该编程思想编写程序,就好比在创造世界,一种上帝式的思维方式。

面向对象编程思想优缺点:

优点:
可扩展性强。(只需要关注对象能干什么拥有什么特征,无需关注他做事情的步骤)

缺点:
编写的复杂难度较高于面向过程编程思想。

注意: 在生产开发中,两种编程思想相辅相成,缺一不可!

2.什么是类?如何定义。

类:

类指的是类型类别。

对象

对象是 特征与技能 的结合体, 类是一系列对象相同的 特征与技能 的结合体。

要定义类时

要定义类: 先抽象,再定义。

现实世界中:

先有对象,然后再有类。

在程序中:

先定义类,后调用用类产生对象。

对象的特征和技能

       - 对象1:
            - 特征:
                - name: hcy
                - age: 84
                - sex: female
                - school = 'oldboy'

            - 技能:
                - 漂泊十年无需用一毛
                - 学习

        - 对象2:
            - 特征:
                - name: JP
                - age: 95
                - sex: male
                - school = 'oldboy'

            - 技能:
                - 澳门赌场上线首席发牌师
                - 学习

        - 学生类:
            - 相同的特征
                - school = 'oldboy'

            - 相同的技能
                - 学习

        class 类名:
            school = 'oldboy'

            def learn(self):
                print('learning...')

3.如何产生对象?

 - 调用类产生对象
      语法: 类名 + () 调用

- 调用类的过程: 称之为类的实例化,产生的对象称之为类的一个实例。

- 调用类时发生的事情:
1) 产生一个空对象的名称空间
2) 自动触发类内容__init__方法的执行。
3) 会将对象本身当做第一个参数,以及调用类括号内所有的参数并传给__init__。

4.对象属性的查找顺序:

1.会先从对象自己的名称空间中查找
2.对象中没有,去类中查找。

5.类内部的函数:

- 由类来调用的方法,就是一个普通函数,函数需要几个参数,就得传入几个参数。
- 由对象来调用,就是一个对象的绑定方法,由不同的对象调用就会绑定给不同的对象,称之为对象的绑定方法。

一切皆对象

比如: python的八大数据类型都是类
            定义数据类型的值时,内部自动调用响应的类,然后产生对象。

人狗大作战

需求:
            - 先有人类,狗类,调用人类与狗类,产生两个对象、
            - 一个是人对象,一个是狗对象,人狗互咬。

            class People:
                def __init__(self, name, life, arg):
                    self.name = name
                    self.life = life
                    self.arg = arg

                # 咬
                def bite(self, dog_obj):
                    dog_obj.life -= self.arg

            class Dog:
                def __init__(self, name, life, dog_type, arg):
                    self.name = name
                    self.life = life
                    self.dog_type = dog_type
                    self.arg = arg

                # 咬
                def bite(self, peo_obj):
                    peo_obj.life -= self.arg

继承

1.什么是继承?

继承是一种新建类的方式,新建的类称之为子类或派生类,
继承的类是父类,也称之为基类或超类。

2.继承的好处?

减少代码冗余(减少重复代码)

3.如何继承?

- 确认继承关系
    - 先抽象,再继承
          - 类是抽取一系列对象相似的部分
          - 父类是抽取一系列类相似的部分

     - 父类
     - 子类
    - 语法:
          class 子类(父类):

4.继承背景下,对象.属性的查找顺序

1.先从对象的名称空间中查找
2.若对象中没有,去子类中查找
3.若子类中没有,去父类中查找

5.派生:

派生: 子类继承父类,派生出自己的属性和方法。

6.重用父类的属性与方法,并派生出自己的属性与方法。

- 直接调用父类中__init__(self)

- super().__init__()

7.新式类与经典类

- 新式类
  - 所以继承object的类,以及子孙类都称之为新式类。

- 经典类
  - 没有继承object的类,都是经典类。

8.钻石继承(菱形继承)背景下,属性查找顺序

经典类: 深度优先
新式类: 广度优先

9..mro: 类的内置方法

类.mro()
super严格依赖mro继承序列的顺序

python基础 面向对象编程

原文:https://www.cnblogs.com/WQ577098649/p/11947049.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!