今日内容回顾
面向对象
编程思想
面向过程编程
过程其实就是流程,面向过程编程其实就是在执行一些列的流程
面向过程编程相当于让你给出一个问题的具体解决方案
面向对象编程
面向对象编程,核心就是 对象
对象其实就是一个容器,里面将数据和功能绑定到了一起
面向对象编程相当于让你创造一些事物之后就不用你管
类与对象的概念
对象:数据与功能的结合体
对象用于记录多个对象不同的数据和功能
类:多个对象相同数据和功能的结合体
类主要用于记录多个对象相同的数据和功能
在面向对象编程中,类仅仅是用于节省代码,对象才是核心。
类与对象的创建
在编程世界里必须是先有类才能够产生对象
面向对象编程的本质就是将数据和功能绑定在一起,
但是为了突出面向对象编程的形式python特地开发了一套语法
专门用于面向对象编程的操作
-
创建类的语法结构
class Student: # 对象的公共数据 # 对象的公共方法 """ 1.class 是创建类的关键字 2.Student 是类的名字 类的命名跟变量名相似,并且为了便于取出类名的首字母推荐大写。 3.类体代码 公共的数据、功能的方法 其中类体代码在类定义阶段就会执行!!! """
-
查看名称空间的方法
""" 1.使用类名句点的方式点出双下dict打印出类名称空间的名字, 可以讲里面数据看成一个字典形式组成的 print(Student.__dict__) 2.使用字典的取值方式获取名字 print(Student.__dict__.get('choice_course')) 在面向对象编程中,想要获取名称空间中的名字,可以采用句点符。 """
-
类实例化产生对象
class Student: # 定义类的关键字class 类的名称 Student # 构造方法,传入name、age、course三个参数 def __init__(self, name, age, course): self.name = name self.age = age self.course = course school = '清华大学' # 实例方法1 def get_name(self): # 通过对象里面的方法访问name的属性 return "姓名:%s" % self.name # 实例方法2 def get_age(self): # 通过对象里面的方法访问age的属性 return r"年龄:%s" % self.age # 实例方法3 def get_course(self): # 通过对象里面的方法访问course的属性 return "最高成绩%s" % max(self.course) # Student 这个类实例化了一个对象 jason stu1 = Student('jason', 28, [66, 87, 100]) print(stu1.school) print(stu1.get_name()) print(stu1.get_age()) print(stu1.get_course()) """ 公共的数据: 清华大学 独有的数据: 姓名:小明 年龄:28 最高成绩100 我们习惯将类或者对象句点符后面的东西称为属性名或者方法名 """
对象独有的数据
# 学生类
class Student:
# 学生对象公共的数据
school = '清华大学'
# 学生对象公共的方法
def choice_course(self):
print('正在选课')
"""
推导思路
直接利用__dict__方法朝字典添加键值对
"""
obj1 = Student()
obj1.__dict__['name'] = 'jason' # 等价于 obj1.name = 'jason'
obj1.__dict__['age'] = 18 # 等价于 obj1.age = 18
obj1.__dict__['gender'] = 'male'
print(obj1.name)
print(obj1.age)
print(obj1.gender)
print(obj1.school)
obj2 = Student()
obj2.__dict__['name'] = 'kevin'
obj2.__dict__['age'] = 28
obj2.__dict__['gender'] = 'female'
print(obj2.name)
print(obj2.age)
print(obj2.gender)
print(obj2.school)
"""
推导思路2
将添加独有数据的代码封装成函数
"""
def init(obj,name,age,gender):
obj.__dict__['name'] = name
obj.__dict__['age'] = age
obj.__dict__['gender'] = gender
stu1 = Student()
stu2 = Student()
init(stu1,'jason',18,'male')
init(stu2, 'kevin',28,'female')
print(stu1.__dict__)
print(stu2.__dict__)
"""
推导思路3:
init函数是专用给学生对象创建独有的数据,
其他对象不能调用>>>:面向对象思想 将数据和功能整合到一起
将函数封装到学生类中 这样只有学生类产生的对象才有资格访问
"""
class Student:
"""
1.先产生一个空对象
2.自动调用类里面的__init__方法 将产生的空对象当成第一个参数传入
3.将产生的对象返回出去
"""
def __init__(self, name, age, gender):
self.name = name # obj.__dict__['name'] = name
self.age = age # obj.__dict__['age'] = age
self.gender = gender # obj.__dict__['gender'] = gender
# 左右两边的名字虽然一样 但是意思不一样 左边的其实是字典的键 右边的其实是实参
# 学生对象公共的数据
school = '清华大学'
# 学生对象公共的方法
def choice_course(self):
print('正在选课')
# stu1 = Student()
# print(stu1.__dict__)
# Student.init(stu1, 'jason', 18, 'male')
# print(stu1.__dict__)
# print(stu1.name)
stu1 = Student('jason', 18, 'male')
print(stu1)
stu2 = Student('kevin', 28, 'female')
print(stu2)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现