-
定义
面向对象是一种编程思想,面向对象的核心不在于解决问题的过程和步骤,而是将参与解决
问题的事物对象抽离出来,重点关注这些对象的行为,通过行为的调用完成整个业务操作。 -
优势
对象的复用性,功能的扩展性 -
专业术语
(1)对象(object)
对象就是生活中客观存在的实际物体,也被称为实体,实体对象,实例,实例对象。
(2) 类 (class)
【1】类其实就是类型的简称,描述的是不同的数据类型,类是对象的模板,对象是类的实体。
【2】类的声明:
class 类型名称:
“””类型的文档注释”””
def __init__(self):
# 声明属性特征(变量)的地方
pass
def 方法名称(self):
# 定义对象的行为
pass
① 类型名称:标识符(字母、数字、下划线组成,数字不能开头)
帕斯卡命名法(大驼峰命名法):一个或者多个单词组成,每个单词首字母大写
② 属性特征:就是一个变量,必须和 self 一起使用;
遵循变量的命名规则[见名知意、下划线命名法] ③ 方法行为:就是一个函数,遵循函数的命名规则[见名知意、下划线命名法]
class Student:
“””学生”””
def __init__(self, name):
self.name = name
def study(self):
# 定义对象的行为
print(f"{self.name}正在学习")
# 创建对象
dujie = Student("渡劫")
# 调用对象属性
print(dujie.name)
# 调用对象方法
dujie.student()
(3) 属性(attribute)
【1】生活中的实体物体,都是包含自己的特征的,如人包含姓名、性别、年龄、肤色特征(名词),属性就是对象的特征(名词)。
【2】类属性:
属于类型的特征,能被当前类型的所有对象访问,但是不允许通过对象修改
① 类属性可以被类型名称直接访问,可以被当前类型的所有对象访问
② 类属性只能被类型名称修改
③ 类属性不能被对象修改
位置:声明在类型的内部,方法的外部
规范:类属性也是属性,也是一个变量,遵循变量的命名规范
class Person:
max_age = 120
def __init__(self, name, age):
self.name = name
self.age = age
# 访问
print(Person.max_age)
print(xinghen.max_age)
print(dujie.max_age)
# 修改
Person.max_age = 150
# 属性扩展
xinghen = ("星痕", 20)
xinghen.gender = "女"
(4) 方法(method)
生活中的实体物体,都是包含具体的行为的,方法就是对象的行为(动词)。
案例操作:
class Person:
"""人的类型"""
def __init__(self, name, gender, age):
"""属性初始化"""
self.name = name
self.age = age
self.gender = gender
def driver(self, car, area):
"""开车,驾驶的行为"""
# 开车:人的行为
print(f"{self.name}准备出发")
# 车:发动出发
car.run(area)
class Vehicle:
"""交通工具"""
def __init__(self, brand, color):
self.brand = brand
self.color = color
def run(self, area):
"""车行驶到某个地方的行为"""
print(f"{self.color}的{self.brand}发动了,准备去{area.name}")
class Area:
"""地点"""
def __init__(self, name, info):
self.name = name
self.info = info
# 需要参与的对象
old_zhang = Person("老张", "男", 68)
luhu = Vehicle("路虎", "黑色")
dong_bei = Area("东北", "那块黑土地...")
old_zhang.driver(luhu, dong_bei)