1、面向对象 OOP思想

相比较函数,面向对象是更大的封装,根据职责在一个对象中 封装多个方法 _

  1. 在完成某一个需求前,首先确定职责要做的事情(方法)
  2. 根据职责确定不同的对象,在对象内部封装不同的方法(多个)
  3. 最后完成的代码,就是顺序的让不同的对象调用不同的方法

2、类和对象

类和对象是面向对象编程的两个核心概念

2.1 类

是对一群具有相同特征 或者 行为事物的一个统称,是抽象的,不能直接使用

  • 特征 被称为 属性
  • 行为 被称为 方法

    2.2 类和对象的关系

  • 类是模板对象是根据这个模板 创建出来的,应该先有类,再有对象


  • 只有一个,而对象可以有很多个
    • 不同的对象之间属性可能会各不相同


  • 中定义了什么属性和方法对象中就有什么属性和方法,不可能多,也不可能少

3、面向对象基础语法

dir()内置函数,可以查看对象的所有方法和属性

在python中 对象几乎是无所不在的,我们之前学习的变量,数据,函数 都是对象

提示: > __方法名__ > 格式的方法是python 提供的内置_> 方法 / 属性

3.1 常见内置方法

序号 方法名 类型 作用
01 new 方法 创建对象时,会被自动调用
02 init 方法 对象被初始化时,会被自动调用
03 del 方法 对象被从内存中销毁前,会被自动调用
04 str 方法 返回对象的描述信息,print 函数输出使用

4、定义一个简单的类

面向对象 是 更大的封装,在一个类中封装多个方法,这样 通过这个类创建出来的对象就可以直接调用这些方法了

  1. # 定义一个简单的类,类名是Test
  2. class Test:
  3. # 定义一个方法
  4. def do_some(self):
  5. pass
  6. def do_other(self):
  7. pass

注意:类名要符合 大驼峰命名法 和_java定义类名一致_

在类中定义的方法,方法形参第一个参数 必须是 self

4.1 创建对象

对象变量 = 类名()

使用print输出对象变量,默认情况下,是能够输出这个变量 引用的对象 是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)

提示: 在计算机中,通常使用> 十六进制> 表示> 内存地址

5、方法中的self参数

  • 在python中,给对象设置属性,非常的容易,但是 不推荐使用
    • 因为:对象属性的封装应该封装在类的内部

**

  • 只需要在类得外部的代码中直接通过 . 设置一个属性即可


  • 注意:这种方式虽然简单,但是不推荐使用

tom.name = “汤姆”

5.1 self == this

  • 方法里面的self参数 就是当前对象 (类似this)


  • 因为在python中可以通过 变量名.属性 的方式 来给对象添加属性,而每一个对象都会添加到不同的属性。


  • 在方法中,可以通过 self.属性 来调用属性


  • 由 哪一个对象调用的方法,方法内的 self 就是哪一个对象的引用
    • 可以通过self. 访问对象的属性
    • 也可以通过self. 调用其他的对象的方法

**

6、初始化方法(类似构造方法)

  • 当使用 类名() 创建对象的时候,会 自动 执行以下操作
    • 为对象在内存中分配空间 — 创建对象


  • 为对象的属性设置初识值 — 初始化方法 init


  • 这个初始化方法 就是 init 方法, init是对象的内置方法
    • init方法是专门用来定义一个类 具有哪些属性的方法
    • 在定义属性时,如果不知道设置什么属性值,可以设置为None
      • None 关键字 表示什么都没有 self.person = None
      • 表示一个空对象,没有方法和属性,是一个特殊的常量
      • 可以将None 赋值给任何一个变量

6.1 在初始化方法内部定义属性

init方法内部使用 self.属性名 = 属性的初始值 就可以定义属性
定义属性后,在使用Cat类创建的对象,都会拥有该属性

  1. class Animal:
  2. # 在__init__方法上定义两个变量,name,gender 可以在创建对象的时候传入进来
  3. def __init__(self, name, gender):
  4. print("创建对象时会自动调用 init方法,初始化方法")
  5. # self.属性名 = 属性的初识值
  6. self.name = name
  7. self.gender = gender
  8. def do_some(self):
  9. print("name: %s" % self.name)
  10. animal = Animal("小猫", True) # 创建对象时 执行 __init__方法,并把值赋上
  11. animal.do_some()

7、del方法(遗言方法)

在python中 :

  • 当使用 类名() 创建对象时,为对象分配完空间后自动调用 init方法
  • 当一个对象被从内存中销毁前,会自动调用 del方法

    8、str方法(类似toString())

    在python中,直接输出对象变量会自动调用 他的 str()方法
    如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用str这个内置方法了

    注意: str_方法必须返回一个字符串_

    1. def __str__(self):
    2. return "测试__str__方法,必须返回一个字符串"