一、面向对象:

         面向对象是一种编程思想,是一种让程序员能更好的编程思想。

核心就是对象,程序是一系列对象的集合,程序负责调度控制这些对象来交互着完成任务。

 

 

在面向对象中,程序员的角度发生了改变,从具体操作者变成了指挥者。

强调:对象不是凭空产生的,需要我们自己设计

 

面向对象的三大优点:

  1. 拓展性
  2. 灵活性
  3. 重用性(代码可以多次使用)

 

缺点:

  1. 程序的复杂度提高了
  2. 无法准确预知结果

使用场景:对扩展性要求较高的程序,通常是直接面向用户的。例如QQ,微信

 

二、面向过程

关注的核心是过程,过程就是一步一步的执行步骤,既先干啥在干啥

 面向过程的优点:

扩展性差,可维护性差

 

使用场景:

对扩展性要求较低的程序  例如:系统内核,git,计算器

 

**不是任何程序都要求面向对象,得分析具体需求

 

 

 

 

 

 

三、类和对象

1.类和对象

这是oop(object-oriented programming)中的最核心的两个概念

类:既类型,类别,是一种抽象概念,是一系列具备相同特征和相同行为的对象的集合

 

对象:就是具体存在的某个事物,具备自己的特征和行为,对象就是特征和技能的结合体

 

         类和对象的关系

         类包含一系列对象,对象属于某个类。

在生活中是先有对象才有类,而程序中是先有类再有对象,我们必须先告诉计算机这个类的对象具有什么特征,什么行为。

总结:在使用面向对象编程时,第一步是思考需要什么样的对象,对象具备什么样的特征和行为,从而根据这些信息总结出需要的类型。

 

2、创建类和对象

定义类的语法

Class 类的名称:

类中的内容(描述属性和技能)        

 

描述属性用变量,技能用函数

 

类的名称书写要求:

首先是见名知意 名称是大驼峰命名法

驼峰就是单词首字母大写,大驼峰是第一个字母大写,小驼峰是第一个字母小写

创建对象的语法

先定义一个类

Class Person:

           Pass

 

然后创建对象:

P = Person()

 

属性可以写在类中,类中的属性是所有对象的公共的

属性也可以写在对象中,对象中的属性,是每个对象特有的(不一样的)

 

注意:如果类中和对象中存在同样的属性,访问这个属性的顺序是先对象中的属性,如果在对象中没有找到,则去类中属性里面找

 

增加属性

对象变量名称.属性名称 = 属性值

 

删除属性

del 对象的变量名称.属性名称

 

修改

对象.属性 = 新的值

 

查看属性  访问的是对象的所有属性

print(对象.__dict__)

 

访问对象的类信息

print(对象.__class__)

        

__init__方法

叫做初始化方法,本质上就是一个函数

 

特点1:当实例化对象时,会自动执行__init__方法

特点2:会自动将对象作为第一个参数传入,参数名称为self,self可以是别的名字,但不建议改

功能:用户给对象附初始值,该函数不能有任何返回值、只能是None  规定如此

 

练习:创建一个类具备几个属性,通过初始化方法来给他设置属性

class Dog:

    def __init__(self,kind,color,age):

        self.kind = kind

        self.color = color

        self.age = age

 

d1 = Dog("二哈","黑白",1)

d1 = Dog("泰迪","棕色",2)

对象的精髓就是将数据和处理数据的函数整合到一起,这样一来拿到一个对象就同时拿到了需要处理的数据以及处理数据的函数

 

  1. 对象的绑定方法

默认情况下类中的方法都是对象绑定方法

其特殊之处在于:

  1. 当使用对象调用该函数时,会自动传入对象自身,作为第一个参数
  2. 当使用类名来调用时,它就是一个普通函数,有几个参数就传几个参数

 

练习:写一个学生类,具备一个打招呼的技能 要能输出自己的名字信息

class Student:

   

    def __init__(self,name):

        self.name = name

    

    def say_hi(self):

        print("hello my name is %s" % self.name)

 

st = Student(“lila”)

st.say_hi()

 

4.类的绑定方法

         类绑定方法用@classmethod 来装饰

特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数

 

**什么时候绑定给对象:当函数逻辑需要访问对象中的数据时

**什么时候绑定给类:当函数逻辑要访问类中的数据时

 

5.非绑定方法

或叫做静态方法,就是即不需要访问类的数据,也不需要访问对象的数据

语法:@staticmethod

      Def 函数名():

                     ‘函数体代码

posted on 2019-07-24 19:27  "莫欺少年穷  阅读(119)  评论(0编辑  收藏  举报