今日内容回顾

面向对象

编程思想

面向过程编程

过程其实就是流程,面向过程编程其实就是在执行一些列的流程

面向过程编程相当于让你给出一个问题的具体解决方案

面向对象编程

面向对象编程,核心就是 对象

对象其实就是一个容器,里面将数据和功能绑定到了一起

面向对象编程相当于让你创造一些事物之后就不用你管

类与对象的概念

对象:数据与功能的结合体

对象用于记录多个对象不同的数据和功能

类:多个对象相同数据和功能的结合体

类主要用于记录多个对象相同的数据和功能

在面向对象编程中,类仅仅是用于节省代码,对象才是核心。

类与对象的创建

在编程世界里必须是先有类才能够产生对象

面向对象编程的本质就是将数据和功能绑定在一起,

但是为了突出面向对象编程的形式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)

posted @   瓮小辉  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示