厦门网站开发公/seo网站查询
目录
1. 标记变量的基础类型
2. 初识对象
2.1 使用对象组织数据
3. 成员变量
3.1 类和类成员的定义
3.2 成员变量和成员方法使用
3.3 成员方法的定义语句
4. 类和对象class Clock: def ring(self):
4.1 创建类对象的语法:对象名 = 类名称()
4.2 用生活中的物件来解释对象
4.3 基于类创建对象
5. 构造方法:__init__()方法
5.1 构造方法
5.2 构造方法注意事项
6. 魔术方法:__init__ 、__str__...
6.1 __str__字符串方法:控制类转换成字符串的行为;
6.2 __lt__小于符号比较方法:对2个对象进行比较;
6.3 __le__小于等于比较符号方法:对2个对象进行比较;
6.4 __eq__,比较运算符实现方法,判断对象的值是否相等;
1. 标记变量的基础类型
方便了解变量的基础类型;
语法:变量: 类型
# 基础数据类型注解
var_1: int = 10
var_2: float = 3.55
var_3: bool = True
var_4: str = "zhangSan"class Student:pass# 类对象类型注解
stu: Student = Student()
2. 初识对象
2.1 使用对象组织数据
1. 在程序中设计表格:设计类(class)
class Student:name = None #记录学生姓名
2. 在程序中打印生产表格:创建对象
# 基于类创建对象
stu_1 = Student()
stu_2 = Student()
3. 在程序中填写表格:对象属性赋值
stu_1.name ="zhangSan" # 为学生1对象赋予名称属性值
stu_2.name ="lisi" # 为学生2对象赋予名称属性值
4. 打印对象结果;
小结:
- 在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的;
- 与程序进行对比:
- 在程序中设计表格:设计类(class)
- 在程序中打印生产表格:创建对象
- 在程序中填写表格:对象属性赋值
3. 成员变量
3.1 类和类成员的定义
- 我们可以使用类去封装属性,并基于类创建出一个个的对象来使用;
- 而类的成员一般都会有:成员变量,成员方法
- 创建类对象的语法:
对象 = 类名称()
class 类名称: # class是关键字,表示定义一个类类的属性 # 即定义在类中的变量(成员变量)类的行为 # 即定义在类中的函数(成员方法)
3.2 成员变量和成员方法使用
- 类中定义的属性(变量)称之为:成员变量;
- 类中定义的行为(函数)称之为:成员方法;
class Student:name = Noneage = Nonedef say_hi(self):print(f"大家好!我是{self.name}") # 2.self.调用成员变量stu = Student()
stu.name = "zhangSan" # 1.成员变量的赋值
stu.say_hi()
3.3 成员方法的定义语句
1. 成员方法定义和self关键字:
- 在类中定义成员方法和定义函数基本一致:
def 方法名(se1f,形参1,.....·,形参N):方法体
- self关键字:self关键字是成员方法定义的时候,必须填写的;
- 它用来表示类对象自身的意思;
- 当我们使用类对象调用方法时,self会自动被python传入;
- 在方法内部,想要访问类的成员变量,必须使用self;
2. 类的行为:
- 在定义类行为时,若无传入的形参,则在相对应调用类的方法时,即可不用传递参数;
- 在定义类行为时,如果定义了形参,这时候在调用类的方法时,就必须传入对应的实参;
- 想要访问成员属性,必须使用self,但是如果是传递的参数,就可以不用,注意,self是必写的关键字,用来调用成员变量;
class Student:name = Noneage = Nonedef say_hi(self):print("大家好!")def say_hi1(self, name):print(f"大家好!我是{name}")stu = Student()
stu.say_hi() # 调用时无需传参
stu.say_hi1("zhangSan") # 调用时按照成员需要传递name实参
4. 类和对象class Clock: def ring(self):
- 概念:类就是一个模板,对象就是实现类的实体;
4.1 创建类对象的语法:对象名 = 类名称()
为什么要创建对象:因为类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作,这种方式通常称为:面向对象编程;
4.2 用生活中的物件来解释对象
- 就比如闹钟:
- 一个闹钟就好比一个对象;
- 那么对象的属性就是闹钟的价格,型号、品牌;
- 那么闹钟的行为就好比:闹钟响铃;
4.3 基于类创建对象
winsound
类:可以让计算机发出一点声音;
# 设计一个闹钟类
class Clock:price = None # 价格size = None # 型号brand = None # 品牌def ring(self):import winsoundprint("闹钟开始响铃...")winsound.Beep(2000, 1000) # 频率,持续时间# 构建闹钟对象并让其工作,clock就是闹钟的对象
clock = Clock()
clock.price = 10
clock.size = "标准型"
clock.brand = "小米"
print(f"闹钟价格{clock.price}元,型号:{clock.size},品牌:{clock.brand}")
clock.ring() # 闹钟响铃行为
小结:
- 现实世界的事物由什么组成?
- 属性;
- 行为;
- 类也可以包含属性和行为,所以使用类描述现实世界事物是非常合透的;
- 类和对象的关系是什么?
- 类是程序中的“设计图纸”;
- 对象是基于图纸生产的具体实体;
- 什么是面向对象编程?
- 面向对象编程就是,使用对象进行编程;
- 即,设计类,基于类创建对象,并使用对象来完成具体的工作;
5. 构造方法:__init__()方法
- 大致就是一个类,可以直接定义init构造方法,直接省去类的成员属性定义,而直接将成员属性定义在init中,并且在类创建时,会自动执行init构造方法,并将传入的参数自动传递给init方法使用;
5.1 构造方法
上面类的属性可以省略不写,在init中已经声明了;
Python类可以使用:_ init() _方法,称之为构造方法:
可以实现:
- 在创建类对象(构造类)的时候,会自动执行;
- 在创建类对象(构造类)的时候,将传入参数自动传递给init方法使用;
class Student:# name = None# age = None 省略成员属性# tel = Nonedef __init__(self, name, age, tel): # 构建类时传入的参数会自动提供给__init__方法,并在构建类的时候__init__方法会自动执行self.name = nameself.age = ageself.tel = telprint("Stu类创建了一个对象", f"学生名是:{name}")sut = Student("zhangSan", 28, "18300000000")
5.2 构造方法注意事项
- 使用_ init _时,注意前后都有2个下划线;
- 构造方法也是成员方法,不用忘记在参数列表中提供:self关键字;
- 在构造方法内定义成员变量,需要使用self关键字,意思是要成为成员变量,需要用self来表示;
def __init__(self, name, age, tel): # 构建类时传入的参数会自动提供给__init__方法,并在构建类的时候__init__方法会自动执行self.name = nameself.age = ageself.tel = telprint("Stu类创建了一个对象", f"学生名是:{name}")
6. 魔术方法:__init__ 、__str__...
-
概念:
不仅仅只有这几个魔术方法,在python中有大概二三十个;
比如说
__init__
就是python类内置的方法之一;这些内置的类方法,各自有各自特殊的功能,这些内置方法称为魔术方法;
- 常见的魔术方法:
__init__
:构造方法__str__
:字符串方法__lt__
:小于,大于符号比较__le__
:小于等于,大于等于符号比较__eq__
:==符号比较
- 常见的魔术方法:
- 可以结合放在一段代码中案例;
6.1 __str__字符串方法:控制类转换成字符串的行为;
类创建时,自动执行__str__魔术方法;
class Student:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"Student类对象,name={self.name},age={self.age}"student = Student("zhangSan", 28)
print(student)
print(str(student))
6.2 __lt__小于符号比较方法:对2个对象进行比较;
同时__lt__也支持大于符号的判断,但是不支持小于等于或大于等于判断;
class Student:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"Student类对象,name={self.name},age={self.age}"def __lt__(self, other): # 传入参数:other,另一个对象,返回值:True和Falsereturn self.age < other.agestudent = Student("zhangSan", 28)
student1 = Student("zhangSan", 30)
print(student < student1)
6.3 __le__小于等于比较符号方法:对2个对象进行比较;
同时支持大于等于判断;等于符号也可以支持;
在这里两个对象相==
判断是否相等是判断两个对象的内存地址是否相等,答案会为False;而比较对象值是否相等要使用__eq__;
class Student:def __init__(self, name, age):self.name = nameself.age = agedef __le__(self, other): # 传入参数:other,另一个对象,返回值:True和Falsereturn self.age <= other.agestudent = Student("zhangSan", 28)
student1 = Student("zhangSan", 30)
print(student <= student1)
6.4 __eq__,比较运算符实现方法,判断对象的值是否相等;
class Student:def __init__(self, name, age):self.name = nameself.age = agedef __eq__(self, other): # 传入参数:other,另一个对象,返回值:True和Falsereturn self.age == other.agestudent = Student("zhangSan", 30)
student1 = Student("zhangSan", 30)
print(student == student1)
相关文章:

Python第二语言(十、Python面向对象(上))
目录 1. 标记变量的基础类型 2. 初识对象 2.1 使用对象组织数据 3. 成员变量 3.1 类和类成员的定义 3.2 成员变量和成员方法使用 3.3 成员方法的定义语句 4. 类和对象class Clock: def ring(self): 4.1 创建类对象的语法:对象名 类名称() 4.2 用生活中的…...

SolidWorks 2016 SP5安装教程
软件介绍 Solidworks软件功能强大,组件繁多。 Solidworks有功能强大、易学易用和技术创新三大特点,这使得SolidWorks 成为领先的、主流的三维CAD解决方案。 SolidWorks 能够提供不同的设计方案、减少设计过程中的错误以及提高产品质量。SolidWorks 不仅…...

为什么高考志愿只选计算机专业?
刚刚高考结束,不知道各位学弟学妹考的怎么样啊? 高考毕竟是对十二年寒窗苦读的评判,也是很多人改变命运的机会。很多同学每天等待出分的过程很煎熬,既吃不好也玩不好(os:这种同学还挺多的)。 但…...

GPT大模型微调-提高垂直领域回答质量
微调一个大模型并测试微调后的效果是一个很好的学习实践。下面是一个逐步指导,帮助你使用一个较小的预训练大模型进行微调,并测试其效果。我们将使用 Hugging Face 的 Transformers 库和一个较小的预训练模型,如 DistilBERT。这个库非常流行且易于使用。 实现步骤 步骤 1:…...

全网首发-Docker被封后的代理设置教程
最近上交、科大以及阿里的一些docker镜像,好像都因为不可控力导致无法访问。 所以,之前好多正常的一些镜像的打包都会报错: 比如: #1 [internall load build definition from Dockerfile#1transferring dockerfile:972B done#1 D…...

代码随想录算法训练营第五十七天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列
代码随想录算法训练营第五十七天 1143.最长公共子序列 题目链接:1143.最长公共子序列 确定dp数组以及下标的含义:dp[i][j] :以下标i - 1为结尾的text1,和以下标j - 1为结尾的text2,最长重复子数组长度为dp[i][j]确…...

RocketMQ事务性消息
RocketMQ事务性消息是一定能保证消息发送成功的 事务消息发送步骤: (1)发送方将半事务消息发送至RocketMQ服务端。 (2)RocketMQ服务端将消息持久化之后,向发送方返回ack确认消息已经发送成功。由于消息为…...

mysql (事物)
一.什么是事物 事物是一组操作的集合,不可分割的工作单位,事物会把所有的操作当作一个整体一起向系统提交或撤销操作请求,就是这些操作要么一起成功要么一起失败。 二.事物操作 (这个就是一个理解) 1.事务特性 原子性…...

kotlin 中的字符串
一、字符类访问 1、字符串的访问跟js一样,可以使用索引来访问或者直接循环。 fun main() {val a: String "2024"// 方式一:for (item in a) {println(item) // 输出每一个字符}// 方式二:println("${a[0]}, ${a[1]}, ${a[2…...

网站线上模板建设的优缺点
优点: 1.搭建的时间短,在线建站,只需要登录注册然后选择网站模板创建网站即可管理自己的网站后台,就几步操作就可以实现。 2.网站出错率少,因为有很多用户在使用,前期所报出来的问题就已经一一…...

哲学家进餐问题
1.最多允许四个哲学家同时进餐,保证有一个筷子是空闲的,从而保证能有有一个哲学家成功进餐,而不导致死锁 semaphore chopstick[5] {1, 1, 1, 1, 1}, mutex4; Pi(){do{think...P(mutex);P(chopstick[i]);P(chopstick[(i1)%5);eat...V(mutex)…...

无人机遥感在农林信息提取中的实现方法与GIS融合应用
在新一轮互联网信息技术大发展的现今,无人机、大数据、人工智能、物联网等新兴技术在各行各业都处于大爆发的前夜。为了将人工智能方法引入农业生产领域。首先在种植、养护等生产作业环节,逐步摆脱人力依赖;在施肥灌溉环节构建智慧节能系统&a…...

联想测开一面(电话面试)笔试60%
联想测开一面(电话面试)笔试60% 3.21 无自我介绍 基本问项目,问实习 对python自动化测试了解多少 讲一下python中打包和解包的概念 学校无测试相关课程,平时用什么平台去学习的 计算机底层实现原理简要说说(软硬结合&…...

【python】tkinter GUI开发: Button和Entry的应用实战探索
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

sm2证书生成(openssl3.0)
1、下载安装包 https://www.openssl.org/source/openssl-3.0.14.tar.gz 2、解压到指定位置 /appserver/openssl-3.0.14 3、安装依赖包 yum -y install gcc perl make zlib-devel perl-CPAN 4、编译 ./config shared --prefix/appserver/SM make depend make make install 5…...

java计算年化利率
接了业务需求需要计算年化利率, 公式定义: IRR计算 在计算 IRR 时,我们希望找到一个折现率r,使得净现值(NPV)为零。NPV 函数定义如下: NPV ∑ t 0 n C t ( 1 r ) t \text{NPV} \sum_{t0}…...

深入理解ChatGPT工作原理
在人工智能领域,自然语言处理(NLP)技术的飞速发展让机器能够更加自然和人类进行交流。OpenAI的ChatGPT作为当前最受关注的NLP模型之一,其出色的对话能力引起了业界和学术界的广泛关注。本文将深入探讨ChatGPT的工作原理࿰…...

在 Wed 中应用 MyBatis(同时使用MVC架构模式,以及ThreadLocal 事务控制)
1. 在 Wed 中应用 MyBatis(同时使用MVC架构模式,以及ThreadLocal 事务控制) 文章目录 1. 在 Wed 中应用 MyBatis(同时使用MVC架构模式,以及ThreadLocal 事务控制)2. 实现步骤:1. 第一步…...

Elasticsearch index 设置 false,为什么还可以被检索到?
在 Elasticsearch 中,mapping 定义了索引中的字段类型及其处理方式。 近期有球友提问,为什么设置了 index: false 的字段仍能被检索。 本文将详细探讨这个问题,并引入列式存储的概念,帮助大家更好地理解 Elasticsearch 的存储和查…...

169. 多数元素
题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3]输出:3 …...

ADS基础教程19 - 电磁仿真(EM)基本概念和实操
EM介绍 一、引言二、基本概念1.EM介绍2.Momentum介绍3.FEM介绍4.Substrate介绍 三、创建Layout并进行Momentum仿真1.创建Layout2.添加Microtrip(微带线)3.添加Substrate4.Momentum仿真 四、总结 一、引言 本章节开始介绍EM的基本概念、内容以及实现具体…...

LabVIEW RT环境中因字符串拼接导致的系统崩溃问题
在LabVIEW实时操作系统(RT)环境中运行的应用程序出现字符串拼接后死机的问题,通常涉及内存管理、内存泄漏或其他资源管理问题。以下是一些指导和步骤,帮助解决这个问题: 1. 内存泄漏检测 字符串拼接会在内存中创建新…...

深层网络:层数多真的更好吗?
深层网络:层数多真的更好吗? 在深度学习的世界里,"深度"始终是一个热门话题。随着技术的发展,我们有了越来越多的方法来构建更深的神经网络,这似乎暗示着“层数越多,效果越好”。然而࿰…...

【QT5】<知识点> QT常用知识(更新中)
目录 一、更改文本颜色和格式 二、QT容器类 三、字符串与整数、浮点数之间的转换 四、QString常用功能 五、SpinBox的属性介绍 六、滑动、滚动、进度条和表盘LCD 七、时间、日期、定时器 一、更改文本颜色和格式 动态设置字体粗体:QFont对象的setBold方法动态…...

如何将AndroidStudio和IDEA的包名改为分层级目录
新版UIAndroidStudio 1、点击项目目录右上角如图所示的三个点点。 2、然后依次取消Hide empty middle package ,Flatten package的勾选 3、注意:一定要先取消hide的勾选,不然目录不会完全分级(做错了可以反过来重新设置&#x…...

北交字节联合提出ClassDiffusion: 使用显式类别引导的一致性个性化生成。
在个性化生成领域, 微调可能会引起过拟合导致模型无法生成与提示词一致的结果。针对这个问题,北交&字节联合提出ClassDiffusion,来提升个性化生成的一致性。 通过两个重要观察及理论分析提出了新的观点:一致性的损失是个性化概念语义偏移导致的, 还…...

37、matlab矩阵运算
1、前言 矩阵运算是指对矩阵的各种操作和运算,包括矩阵加法、矩阵减法、矩阵乘法、矩阵转置、求逆矩阵等。以下是常见的矩阵运算: 矩阵加法:对应位置的元素相加,要求加数和被加数的维度相同。 A B | a11 b11 | | a12 b12 | | …...

用软件实现的硬件——虚拟机
通过软件实现CPU和内存等硬件所具有的功能,并在计算机中运行循环的计算机技术称为虚拟机。使用虚拟机,就可以在一台计算机中运行多个循环出来的计算机。 近几年的计算机,除了硬件具有较高的性能外,CPU的性能也有了提升。因此&…...

[Shell编程学习路线]--shell中重定向和管道符(详细介绍)
🏡作者主页:点击! 🛠️Shell编程专栏:点击! ⏰️创作时间:2024年6月12日10点50分 🀄️文章质量:93分 ——前言—— 在Shell编程中,重定向和管道符是两个…...

Linux命令详解(1)
在Linux操作系统中,命令行界面(CLI)是一个强大的工具,它允许用户通过键入命令来与系统交互。无论是系统管理员还是普通用户,掌握一些基本的Linux命令都是非常重要的。在本文中,我们将探讨一些常用的Linux命…...