python学习笔记15 python中的类
上一篇我们介绍了python中的库 ,学习了一些常见的内置库。详细内容可点击–>python学习笔记14 python中的库,常见的内置库(random、hashlib、json、时间、os)
这一篇我们来看一下python中的类
创建一个类
class 类的名称():def __init__(self,参数1,参数2,...):代码块1def 方法名1(参数3,参数4,...):代码块2def 方法名2(参数5,参数6,...):代码块3...#特别注意:class类中的函数,
# 必须要有一个参数,且是第一个定义,self#self: 表示当前调用该方法的对象
# 定义一个类
class Person:def eat(self):print("吃饭")def call(self,name):print(f"打电话给{name}")
通过一个类创建一个对象
class Person:def eat(self):print("吃饭")def call(self,name):print(f"打电话给{name}")
# 相当于创建一个Person类的对象,将对象的地址值赋值给变量p1
p1 = Person()
p1.eat() #吃饭
p1.call('王子奇') #打电话给王子奇
通过一个类创建多个对象
class Person:def eat(self):print("吃饭")def call(self,name):print(f"打电话给{name}")
# 相当于创建一个Person类的对象,将对象的地址值赋值给变量p1
p1 = Person()
p1.eat() #吃饭
p1.call('王子奇') #打电话给王子奇
print("----------------------------")
p2 = Person() # 在内存中开辟一个新的空间
p2.eat() #吃饭
p2.call('王俊凯') #打电话给王俊凯
print(id(p1)==id(p2)) # False 地址值不同
给对象赋予属性
- 类中不写,创建对象的之后,单独为该对象创建新的属性
class Person:def eat(self):print("吃饭")def call(self,name):print(f"打电话给{name}")p1 = Person()
p1.name = '小虎'
print(f"p1对象的姓名为:{p1.name}")p2 = Person() # 在内存中开辟一个新的空间
# print(f"p1对象的姓名为:{p2.name}") # 报错
- 类中编写,创建对象的时候,直接就拥有了某个属性,并且可以直接赋值
class Person:def __init__(self,name):# self.name 定义一个类中的属性,叫做nameself.name = namedef eat(self):print("吃饭")def call(self,name):print(f"打电话给{name}")# 使用类名() 的方式创建对象,实际上底层调用的是类中的__init__(self)
# 若自己没写,默认一个类中有一个__init__(self),且只能有一个
p1 = Person('小虎')
print(f"p1对象的姓名为:{p1.name}") #p1对象的姓名为:小虎p2 = Person('张三')
print(f"p2对象的姓名为:{p2.name}") #p2对象的姓名为:张三
练习题:
手机:
属性: 品牌, 价格, 颜色
行为:打电话, 发短信
class Phone():def __init__(self,brand,price,color):self.brand=brandself.price=priceself.color=colordef call(self,name):print(f"正在打电话给{name}...")def send_message(self,name,text):print(f"给{name}发短信了,短信内容是:{text}")if __name__ == '__main__':p1=Phone('HUAWEI',9999,"宝石蓝")p1.call('王俊凯')p1.send_message('王俊凯','你什么时候开演唱会')p2=Phone('XIAOMI',5999,"钻石白")p1.call('王子奇')p1.send_message('王子奇', '和黄景瑜在拍一个剧吧')
类的继承
继承是将多个类中的相同的部分,单独提取到一个类中,这些类于单独提出来的这个类产生一个关系,这个关系,就叫做继承关系,其他类中也就拥有了相同的部分,不需要特地定义出来。
通过继承,子类拥有了父类中的成员。
class 父类:pass
class 子类(父类):pass
class Student:def __init__(self,id,name,age):self.id=idself.name=nameself.age=agedef __str__(self):return f'Student:({self.id},{self.name},{self.age})'def study(self):print(f'{self.name}在学习')def play(self):print(f'{self.name}在玩')
class PrimaryStudent(Student):pass
class HighStudent(Student):pass
stu1=PrimaryStudent('20240001','图图',8)
stu1.study()
stu1.play()
stu2=HighStudent('20240002','莉莉',15)
stu2.study()
stu2.play()

特别注意:
-
子类无法继承父类中私有的成员
class Fu:def fun1(self):print("好好学习,天天向上!")def __fun2(self):print("这是父类中私有的成员函数__fun2") class Son(Fu):pass s1 = Son() s1.fun1() s1.__fun2()
-
若子类中出现与父类的函数名以及函数参数都一样,只是实现不一样的情况,子类对象调用的是自己的函数
class Fu:def fun1(self):print("好好学习,天天向上!")def __fun2(self):print("这是父类中私有的成员函数__fun2")def fun3(self):self.__fun2() class Son(Fu):def fun1(self):print("这是子类中的函数fun1")pass s1 = Son() s1.fun1()
-
子类中可以定义父类中没有的成员属性
class Fu:def __init__(self,name,age):self.name = nameself.age = age class Zi(Fu):def __init__(self, name, age, sid):super().__init__(name,age)self.sid = sid z1 = Zi('张三',18, 1001) print(z1.name,z1.age,z1.sid) #张三 18 1001 -
子类继承父类的同时,可以出现父类中没有的行为
class Fu2:def fun1(self):print("shujia") class Zi2(Fu2):def show(self):print("shujia666") # d1 = Fu2() # d1.fun1() # d1.show() #报错 d2 = Zi2() d2.fun1() d2.show()
-
子类中可以使用super()来调用父类中非私有的成员
class Fu:def fun1(self):print("这是父类中的fun1") class Zi(Fu):def fun1(self):print("这是子类中的fun1")def show(self):self.fun1() # 调用的是子类中重写后的fun1函数# 调用父类中的fun1super().fun1() z = Zi() z.show()
-
在python中一个类可以同时继承多个类
class Fu:def fun1(self):print("这是父亲中的函数fun1") class Mather:def fun2(self):print("这是母亲中的函数fun2") class Son(Fu, Mather):def fun3(self):print("这是儿子自己的函数") s1 = Son() s1.fun1() s1.fun2() s1.fun3()
若同时继承的类中有相同的函数名,谁先写就调用谁的
class Fu:def fun1(self):print("这是父亲中的函数fun1")def show(self):print("这是父亲中的函数show") class Mather:def fun2(self):print("这是母亲中的函数fun2")def show(self):print("这是母亲中的函数show") class Son(Mather,Fu):def fun3(self):print("这是儿子自己的函数") s1 = Son() s1.fun1() s1.fun2() s1.fun3() s1.show() # 调用的是母亲中的show
多态
表示的是某一个事物在不同时刻下的不同状态
在python中默认支持多态,因为python是动态数据类型语言。
class Animal:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"name:{self.name}, age:{self.age}"def eat(self):print("吃")def sleep(self):print("睡")
#抽象
class Dog(Animal):pass
a1 = Animal('小黄',2)
a1 = Dog('小黑',3)
print(a1) #name:小黑, age:3
抽象
from abc import abstractmethod
# from typing import override
class Animal:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"name:{self.name}, age:{self.age}"@abstractmethoddef eat(self):pass@abstractmethoddef sleep(self):passclass Dog(Animal):# @overridedef eat(self):print("🐕吃🥩")# @overridedef sleep(self):print("🐕趴着睡")# a1 = Animal('小黄',2)
a1 = Dog('小黑',3)
a1.eat() #🐕吃🥩
a1.sleep() #🐕趴着睡
类变量
将变量定义在类中函数外
class Demo1:
# 类变量a = 100def fun1(self):a = 10print(a)print(Demo1.a) # 通过类名直接访问
d1 = Demo1()
d1.fun1()
print(d1.a) # 也可以通过对象名进行访问

下一篇我们来几个关于类的练习题结束我们python的基础语法内容啦。
我们即将进入python的进阶内容,数据分析numpy、pandas、matplotlib的学习!
点赞收藏关注,一起打卡python学习吧
相关文章:
python学习笔记15 python中的类
上一篇我们介绍了python中的库 ,学习了一些常见的内置库。详细内容可点击–>python学习笔记14 python中的库,常见的内置库(random、hashlib、json、时间、os) 这一篇我们来看一下python中的类 创建一个类 class 类的名称():de…...
PMP–一、二、三模、冲刺–分类–10.沟通管理
文章目录 技巧十、沟通管理 一模10.沟通管理--1.规划沟通管理--文化意识--军事背景和非军事背景人员有文化差异5、 [单选] 项目团队由前军事和非军事小组成员组成。没有军事背景的团队成员认为前军事团队成员在他们的项目方法中过于结构化和僵化。前军事成员认为其他团队成员更…...
android-studio开发第一个项目,并在设备上调试
恭喜你成功安装并配置好了 Android Studio!下面是开发你的第一个 Android 项目并在设备上调试的详细步骤: 1. 启动 Android Studio 首先,启动 Android Studio。你可以通过以下几种方式启动: 使用桌面快捷方式(如果已…...
springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码
springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码 基于springboot(可改ssm)htmlvue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&…...
Spring 依赖 详解
Spring 依赖详解 在 Spring 框架中,依赖 是指一个对象(Bean)需要另一个对象(Bean)来完成其功能的情况。Spring 通过 依赖注入(Dependency Injection, DI) 和 控制反转(Inversion of…...
千益畅行,旅游卡有些什么优势?
千益畅行共享旅游卡是一种创新的旅游服务模式,旨在通过整合各类旅游资源,为用户提供一站式的旅游解决方案。这张旅游卡支持2至6人同行,涵盖了接机、酒店、用餐、大巴、导游、景区门票等服务,用户只需自行承担往返交通费用即可享受…...
Ubuntu24 cgroupv2导致rancher(k3s)启动失败的处理
方案一: 修改系统镜像为ubuntu18 方案二: 修改当前系统的cgroup版本,由v2改成v1 修改步骤: 1、查看当前cgroup版本 stat -fc %T /sys/fs/cgroup cgroup v2,输出结果为cgroup2fs cgroup v1,输出为tm…...
学习CSS第二天
学习文章目录 一.内部样式 一.内部样式 写在 html 页面内部,将所有的 CSS 代码提取出来,单独放在 <style> 标签中 语法: <style> h1 { color: red; font-size: 40px; } </style>注意点: <style> 标签理…...
2021数学分析【南昌大学】
2021 数学分析 求极限 lim n → ∞ 1 n ( n + 1 ) ( n + 2 ) ⋯ ( n + n ) n \lim_{n \to \infty} \frac{1}{n} \sqrt [n]{(n+1)(n+2) \cdots (n+n)} n→∞limn1n(n+1)(n+2)⋯(n+n) lim n → ∞ 1 n ( n + 1 ) ( n + 2 ) ⋯ ( n + n ) n = lim n → ∞ ( n + …...
单端和差分信号的接线法
内容来源:【单端信号 差分信号与数据采集卡的【RSE】【 NRES】【 DIFF】 模式的连接】 此篇文章仅作笔记分享。 单端输入 单端信号指的是输入信号由一个参考端和一个信号端构成,参考端一般是地端,信号就是通过计算信号端口和地端的差值所得…...
力扣-图论-2【算法学习day.52】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
MySQL如何区分幻读和不可重复读
在MySQL中,幻读和不可重复读都是并发事务中可能出现的问题,但它们的表现和原因略有不同。 不可重复读 (Non-Repeatable Read) 不可重复读是指在同一个事务内,多次读取同一行数据时,可能会得到不同的结果。这种情况发生在一个事务…...
界面控件Syncfusion Essential Studio®现在已完全支持 .NET 9
Syncfusion Essential Studio现在完全支持 .NET 9,可最新版本2024 Volume 3 版本中使用!通过此更新,Blazor、.NET MAUI、WPF、WinForms、WinUI和ASP.NET Core 平台中的 Syncfusion 组件以及文档处理库已准备好让您利用 .NET 9 中的最新功能。…...
openEuler安装lsb_release
lsb_release是linux下查看发行版信息用的工具 lsb_release只是一个小程序,它的包名并不是lsb_release lsb_release其实是红帽的一个项目,其名为redhat-lsb 我们的lsb_release就是其中的一部分,更准确的说是redhat-lsb-core 从网站࿱…...
统计数字字符个数
统计数字字符个数 C语言实现C实现Java实现Python实现 💐The Begin💐点点关注,收藏不迷路💐 输入一行字符,统计出其中数字字符的个数。 输入 一行字符串,总长度不超过255。 输出 出为1行,输出…...
44页PDF | 信息化战略规划标准框架方法论与实施方法(限免下载)
一、前言 这份报告详细介绍了企业信息化战略规划的标准框架、方法论以及实施方法,强调了信息化规划应以业务战略和IT战略为驱动力,通过构筑企业架构(EA)来连接长期战略和信息化建设。报告提出了信息化规划原则,探讨了…...
计算机网络期末复习-part1-概述
1、互联网的组成 互联网由两大块组成。 1、边沿部分:由所有连接在互联网上的主机组成,是用户直接使用的部分。 2、核心部分,由大量网络和路由器组成,为边缘部分提供服务。 2、数据传送阶段的三种交换方式的主要特点 1、电路交…...
A1228 php+Mysql旅游供需平台的设计与实现 导游接单 旅游订单 旅游分享网站 thinkphp框架 源码 配置 文档 全套资料
旅游供需平台 1.项目描述2. 开发背景与意义3.项目功能4.界面展示5.源码获取 1.项目描述 随着社会经济的快速发展,生活水平的提高,人们对旅游的需求日益增强,因此,为给用户提供一个便利的查看导游信息,进行导游招募的平…...
RabbitMQ消息可靠性保证机制5--消息幂等性处理
RabbitMQ层面有实现“去重机制”来保证“恰好一次”吗?答案是没并没有,而且现在主流的消息中间件都没有实现。 一般解决重复消息的办法是:在消费端让我们消费消息操作具有幂等性。 幂等性问题并不是消息系统独有,而是࿰…...
Claude3.5如何使用?
Claude 3.5 Sonnet,性能直接吊打了 GPT-4o,甚至价格还更便宜。网友们纷纷展开实测,有人表示自己一半的工作已经可以由它替代了!而最让人惊喜的新功能,莫过于 Artifacts 了。 就在昨天,Anthropic 深夜发布了…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
