1、面向对象 OOP思想
相比较函数,面向对象是更大的封装,根据职责在一个对象中 封装多个方法 _
- 在完成某一个需求前,首先确定职责 — 要做的事情(方法)
- 根据职责确定不同的对象,在对象内部封装不同的方法(多个)
- 最后完成的代码,就是顺序的让不同的对象,调用不同的方法
2、类和对象
类和对象是面向对象编程的两个核心概念
2.1 类
类是对一群具有相同特征 或者 行为的事物的一个统称,是抽象的,不能直接使用
- 类只有一个,而对象可以有很多个
- 不同的对象之间属性可能会各不相同
- 类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少
3、面向对象基础语法
dir()内置函数,可以查看对象的所有方法和属性
在python中 对象几乎是无所不在的,我们之前学习的变量,数据,函数 都是对象
提示: > __方法名__ > 格式的方法是python 提供的内置_> 方法 / 属性
3.1 常见内置方法
序号 | 方法名 | 类型 | 作用 |
---|---|---|---|
01 | new | 方法 | 创建对象时,会被自动调用 |
02 | init | 方法 | 对象被初始化时,会被自动调用 |
03 | del | 方法 | 对象被从内存中销毁前,会被自动调用 |
04 | str | 方法 | 返回对象的描述信息,print 函数输出使用 |
4、定义一个简单的类
面向对象 是 更大的封装,在一个类中封装多个方法,这样 通过这个类创建出来的对象,就可以直接调用这些方法了
# 定义一个简单的类,类名是Test
class Test:
# 定义一个方法
def do_some(self):
pass
def do_other(self):
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类创建的对象,都会拥有该属性
class Animal:
# 在__init__方法上定义两个变量,name,gender 可以在创建对象的时候传入进来
def __init__(self, name, gender):
print("创建对象时会自动调用 init方法,初始化方法")
# self.属性名 = 属性的初识值
self.name = name
self.gender = gender
def do_some(self):
print("name: %s" % self.name)
animal = Animal("小猫", True) # 创建对象时 执行 __init__方法,并把值赋上
animal.do_some()
7、del方法(遗言方法)
在python中 :