文章目录
- 学习目标
- 一、面向对象介绍
- 二、类和对象
- 2.1 类
- 2.2 对象
- 2.3 类的设计
- 2.4 self语句的使用
- 三、魔法方法
- 3.1 对象操作的魔法方法
- 3.2 运算符相关的魔法方法
- 四、内置属性
- 4.1 把对象当做一个字典使用
- 五、类属性和对象(实例)属性
- 六、私有属性和方法
学习目标
- 说出面向对象和面向过程的特点
- 能够使用dir内置函数查看对象的方法
- 能够使用类创建对象
- 能够说出self的含义
- 能够说出魔法方法什么时候调用
- 能够说出内置属性的作用
- 能够说出实例属性和类属性的区别
- 能够定义和操作使用属性
一、面向对象介绍
- 面向过程:根据业务逻辑从上到下写代码
- 面向对象:将 变量与函数 绑定到一起,分类进行封装,每个程序只负责分配给自己的分类,这样能够更快速的开发程序,减少了重复代码
二、类和对象
- 类和对象是面向对象编程的两个核心概念
2.1 类
类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用
- 特征其实就是一个变量,在类里我们称之为属性
- 行为其实就是一个函数,在类里我们称之为方法
- 类其实就是由 属性 和 方法 组成的一个抽象概念
2.2 对象
对象是由类创建出来的一个具体存在,可以直接使用。由哪一个类创建出来的 对象,就拥有在哪一个类中定义的属性和方法
2.3 类的设计
在程序开发中,要设计一个类,通常需要满足一下三个要素:
- 类名 这类事物的名字,按照大驼峰命名法(每个单词的首字母大写)起名
- 属性 这类事物具有什么样的 特征
- 方法 这类事物具有什么样的 行为
# 定义类:class关键字
# class 类名:类名按照大驼峰命名法(每个单词的首字母大写)起名
# 1. class <类名>
# 2. class <类名>(object)class Student(object):def __init__(self,name,age,height): # 在 __init__ 方法里,以参数的形式定义属性self.name = nameself.age = ageself.height = heightdef run(self):print('正在跑步')def eat(self):print('正在吃东西')# 使用 Student类 创建了两个实例对象 s1 s2
# s1和s2都会有name,age,height属性,同时都有run和eat方法
s1 = Student('小明',18,1.8)
s2 = Student('小美',19,1.65)
2.4 self语句的使用
class Student:# 这个属性直接定义在类里,是一个元组,用来规定对象可以存在的属性,可以限制动态属性的设置__slots__ = ('name','age')def __init__(self,x, y):self.name = xself.age = y
# Student('张三',18) 这段代码具体做了什么呢?
# 1. 调用 __new__ 方法,用来申请s内存空间
# 2. 调用 __init__ 方法传入参数,并让 self 指向申请好的那段内存空间,填充数据
# 3. 变量 s1 也指向创建好的这段内存空间
s1 = Student('张三', 18)# 直接使用等号给一个对象的属性赋值
# 如果这个属性以前不存在,会给对象添加一个新的属性
# 动态属性
s.city = '上海' # 给对象添加了一个city属性# 如果这个属性以前存在,会修改这个属性
s.name = 'jack'
三、魔法方法
3.1 对象操作的魔法方法
# 魔法方法,也叫魔术方法,是类里的特殊的一些方法
# 特点
# 1. 不需要手动调用,会在合适的时机自动调用
# 2. 这些方法,都是是使用 __ 开始,使用 __ 结束
# 3. 方法名都是系统规定好的,在合适的实际自己调用class Person(object):# __init__ 魔法方法在创建对象时,会自动调用这个方法def __init__(self,name,age