Python 面向对象(一)(成员方法、类和对象)

news2024/12/23 23:05:10

初识对象

生活中数据的组织

学校开学,要求学生填写自己的基础信息,一人发一张白纸,让学生自己填

改为登记表,打印出来让学生自行填写:

 程序中数据的组织

在程序中简单使用变量来记录学生信息

 使用变量记录数据太乱了。

  • 如果程序中也和生活中一样 可以设计表格
  • 可以将设计的表格打印出来
  • 可以将打印好的表格供人填写内容

那么数据的组织就非常方便了。

使用对象组织数据

在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的。

  1. 在程序中设计表格,我们称之为:设计类(class)
    class Student:
        name = None  # 记录学生姓名
    
  2. 在程序中打印生产表格,我们称之为:创建对象
    # 基于类创建对象
    stu_1 = Student()
    stu_2 = Student()
  3. 在程序中填写表格,我们称之为:对象属性赋值
    stu_1.name = "周杰伦"      # 为学生1对象赋予名称属性值
    stu_2.name = "张三"        # 为学生2对象赋予名称属性值
    

    总结:

1. 生活中或是程序中,我们都可以使用设计表格、生产表格、填写表格的形式组织数据

2. 进行对比,在程序中:

  • 设计表格,称之为:设计类(class)
  • 打印表格,称之为:创建对象
  • 填写表格,称之为:对象属性赋值

成员方法

类的定义和使用

我们简单了解到可以使用类去封装属性,并基于类创建出一个个的对象来使用。 现在我们来看看类的使用语法:

  • class是关键字,表示要定义类了
  • 类的属性,即定义在类中的变量(成员变量)
  • 类的行为,即定义在类中的函数(成员方法)

创建类对象的语法:对象 = 类名称()

成员变量和成员方法

什么是类的行为(方法)呢?

class Student:
    name = None  # 学生的姓名
    age = None  # 学生的年龄

    def say_hi(self):
        print(f"Hi大家好,我是{self.name}")


stu = Student()
stu.name = "张三"
stu.age = 25
stu.say_hi()        # Hi大家好,我是张三

 可以看出,类中:

  • 不仅可以定义属性用来记录数据
  • 也可以定义函数,用来记录行为

其中:

  • 类中定义的属性(变量),我们称之为:成员变量
  • 类中定义的行为(函数),我们称之为:成员方法

定义在类内部的函数 称之为方法

成员方法的定义语法

在类中定义成员方法和定义函数基本一致,但仍有细微区别:

    def 方法名(self, 形参1, ......, 形参N):
       方法体

可以看到,在方法定义的参数列表中,有一个:self关键字

self关键字是成员方法定义的时候,必须填写的。

  • 它用来表示类对象自身的意思
  • 当我们使用类对象调用方法的是,self会自动被python传入
  • 在方法内部,想要访问类的成员变量,必须使用self
        def say_hi(self):
            print(f"Hi大家好,我是{self.name}")

注意事项

self关键字,尽管在参数列表中,但是传参的时候可以忽略它。 如:

class Student:
    name = None

    def say_hi(self):
        print("Hello 大家好")

    def say_hi2(self, msg):
        print(f"Hello 大家好,{msg}")


stu = Student()
stu.say_hi()  # 调用的时候无需传参
stu.say_hi2("很高兴认识大家")  # 调用的时候,需要传msg参数


结果:
Hello 大家好
Hello 大家好,很高兴认识大家

 可以看到,在传入参数的时候,self是透明的,可以不用理会它。

总结

 类是由哪两部分组成呢?

  • 类的属性,称之为:成员变量
  • 类的行为,称之为:成员方法

注意:函数是写在类外的,定义在类内部,我们都称之为方法哦

类和成员方法的定义语法

  • self的作用 表示类对象本身的意思
  • 只有通过self,成员方法才能访问类的成员变量
  • self出现在形参列表中,但是不占用参数位置,无需理会

类和对象

现实世界的事物和类

 

 现实世界的事物也有属性和行为,类也有属性和行为。

使用程序中的类,可以完美的描述现实世界的事物

类和对象  对象名 = 类名称()

基于类创建对象的语法:

为什么非要创建对象才能使用呢?

        类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作

                        这种套路,称之为:面向对象编程

使用类和对象描述现实事物

在现实中,生产事物

 在程序中通过类来描述

 基于类创建对象

 

class Clock:
    id = None           # 序列号
    price = None        # 零售价

    def ring(self):
        import winsound
        winsound.Beep(2000, 3000)


clock1 = Clock()            # 基于类创建对象
clock1.id = "003032"
clock1.price = 100
print(f"闹铃ID:{clock1.id},价格:{clock1.price}")
clock1.ring()           # 使用对象的属性和行为clock1 = Clock()

clock2 = Clock()            # 基于类创建对象
clock2.id = "003033"
clock2.price = 152
print(f"闹铃ID:{clock2.id},价格:{clock2.price}")
clock2.ring()           # 使用对象的属性和行为

总结:

 1. 现实世界的事物由什么组成?

  • 属性
  • 行为

类也可以包含属性和行为,所以使用类描述现实世界事物是非常合适的

2. 类和对象的关系是什么?

  • 类是程序中的“设计图纸”
  • 对象是基于图纸生产的具体实体

3. 什么是面向对象编程?

  • 面向对象编程就是,使用对象进行编程。

即,设计类,基于类创建对象,并使用对象来完成具体的工作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/790775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python怎么将图片转换成base64编码

目录 什么是base64编码 Base64编码的特点 Base64编码的应用 Python怎么将图片转换成base64编码 什么是base64编码 Base64编码是一种将二进制数据转换为ASCII字符的编码方式。它是由MIME(Multipurpose Internet Mail Extensions)规范定义的&#xff0…

CAD转PDF怎么从彩色变成黑白?这个小技巧要掌握

CAD文件,也被称为CAD文档或CAD绘图文件,是一种专用的计算机辅助设计文件格式。它通常用于表示二维或三维设计图形和相关的几何属性。CAD文件可以在计算机辅助设计软件中打开和编辑。 通常由一个或多个图层组成,每个图层可以包含不同的颜色、线…

day37回溯算法

1.什么是回溯算法 回溯就是递归问题: 解决组合问题(无顺序),切割问题,子集问题,排列问题(顺序) 所有的回溯可以抽象为一棵树:树 宽度就是for循环大小 树深度就是回溯 vo…

HCIP——OSPF基础

OSPF基础 一、OSPF基础二、OSPF的区域划分三、OSPF的数据包hello包数据库描述包DBD包链路状态请求包LSR包链路状态更新包LSU包链路状态确认包LSAck包 四、OSPF的状态机五、OSPF的工作过程六、链路状态型的路由生成过程七、条件匹配五、OSPF数据包头部八、OSPF的接口网络类型 一…

C++的六大“天选之子“之“构造“与“析构“

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

【LeetCode】64.最小路径和

题目 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid [[1,3,1],[1,5,1],[4,2,1]] 输出&#…

离多态更近一步

在面向对象的语言里面,封装,继承,多态可谓是在熟悉不过了,当我们每次再去重新认识它们的时候总会有新的发现,为此我也经常感到疑惑,所以在这里和大家一起探讨三个问题,让我们在向多态靠近一点点。 虚表是否真的存在静态区 经常我们都会看见一个问题,虚表到底是存放…

使用show effective grants查看权限

1、问题描述 用户 show grants 显示只有连接权限,但该用户却能执行 sbtest.*下的所有操作 GreatSQL> \s ... Server version: 8.0.32-24 GreatSQL, Release 24, Revision 3714067bc8c ... GreatSQL> show grants; ---------------------------------------…

哪些在线工具能免费转换MP3格式?分享两个方法!

哪些在线工具能免费转换MP3格式?通常来说,MP3格式转换器都具备简洁的界面、便捷的操作以及强大的功能,它们可以将各种流行的视频或音频格式转换成MP3文件,甚至可以制作手机铃声。用户只需要在设置中设定录制时间,即可轻…

MIT 6.830数据库系统 -- lab four

MIT 6.830数据库系统 -- lab four 项目拉取引言事务、锁 & 并发控制事务ACID特性两阶段锁 Recovery and Buffer ManagementGranting Locks(授予锁)练习1 Lock Lifetime练习2 Implementing NO STEAL练习3 事务练习4 死锁和中止练习5 项目拉取 原项目使用ant进行项目构建&am…

勘探开发人工智能应用:初至波拾取

AI在油田主营业务即勘探开发运销和经营管理领域的落地场景,需要的算法、模型及关键技术。 1 初至波拾取 在地震数据采集过程中,由人工震源激发后检波器最先接收到地震波的起跳位置,得到这一位置的过程就是初至拾取。“初至拾取在构建精细近…

AI生成写真照 妙鸭能取代海马体?

只要9.9元和21张照片,就能生成各种风格的个人写真照,界面简洁、卖点吸睛的妙鸭相机突然火了。采用AI技术,它以更低的成本和更高的效率,让用户足不出户“拍写真”,有人直呼,它要抢海马体这类实体照相馆的饭碗…

基于51单片机和proteus的模拟楼道灯系统

此系统是基于51单片机和proteus的仿真设计,功能如下: 1. 系统实时检测楼道光照强度。 2. 光照弱情况下,触摸或声音可开启楼道灯。 3. 光照强情况下,触摸或声音都不能开启楼道灯。 4. 楼道灯开启一段时间(3S&#x…

数据库应用:MySQL MHA高可用集群

目录 一、理论 1.MHA 2.MySQL MHA部署准备 3.MySQL MHA部署 二、实验 1.MHA部署 三、问题 1.中英文符兼容报错 2.MHA测试 ssh 无密码认证语法报错 3.MHA测试 ssh 无密码认证log-bin报错 4.MHA测试 mysql 主从连接情况报错slave replication 5.MHA测试 mysql 主从连…

高质量代码究竟依赖设计还是重构而来?

👉导读 一个有所追求的程序员一定都希望自己能够写出高质量的代码,但高质量代码从何而来呢?有人认为是设计出来的,就像一栋稳固的大厦,如果没有前期优秀的设计那么肯定难逃豆腐渣工程的命运;也有人认为是重…

什么是NQA?

一、什么是NQA? 网络质量分析NQA(Network Quality Analysis)是一种实时的网络性能探测和统计技术,可以对响应时间、网络抖动、丢包率等网络指标进行统计。NQA能够实时监视网络服务质量,在网络发生故障时进行有效的故障…

年内实现全面自动驾驶?快来恶补一下自动驾驶技术吧

在7月6日召开的2023世界人工智能大会上,特斯拉CEO斯克预测,随着人工智能技术的快速发展,大约在今年年末,就会实现全面自动驾驶。 他说,“我之前也做过许多类似的预测,我承认之前的预测也不完全准确&#x…

《中国大学生计算机设计大赛》应用与开发组 “国二省一“ 备赛心得,万字干货 (建议收藏)

💧 《中国大学生计算机设计大赛》备赛心得 \color{#FF1493}{《中国大学生计算机设计大赛》备赛心得} 《中国大学生计算机设计大赛》备赛心得💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客…

Python编译过程和执行原理

hello,这里是Token_w的文章,主要讲解python的基础学习,希望对大家有所帮助 整理不易,感觉还不错的可以点赞收藏评论支持,感谢! 目录 一. Python执行原理二. Python内部执行过程2.1 编译过程概述2.2 过程图解…

8.6 PowerBI系列之DAX函数专题-非日期类型的累计聚合

需求 需求1: 需求2: 实现 1.需求1实现: (1)在power query中添加列-添加索引列; (2)根据索引列进行累加计算。 度量值 累计聚合销售额 var current_pro_type selectedvalue(…