当前位置: 首页 > news >正文

python | 类与对象

在 Python 中,我们用关键字 class 来定义类:

class Player:pass

Player 类中只有一条语句 pass,这是 Python 中的特殊语句,没有实际含义。

Python 在执行到它时也什么都不会做。不过它能够保证结构的完整性。例如,我们只写了一行 while True:,Python 会警告我们循环体为空;而如果我们在循环体位置添加一行 pass,Python 就不会报错了:

# 循环体为空,Python 会报错
while True:# 虽然循环体内的 pass 没有实际含义
# 但它补全了 while 循环结构,因此 Python 不会报错
while True:pass

类中可以包含若干 属性 和 方法属性 用于描述对象的特征,方法 用来定义对象的行为。

class Player:arm_num = 2 # 两只胳膊leg_num = 2 # 两条腿eye_num = 2 # 一双眼睛

类的实例化:

class Player:arm_num = 2 # 两只胳膊leg_num = 2 # 两条腿eye_num = 2 # 一双眼睛# 实例化 Player 类,生成一个新的实例对象
robot = Player()

实例化 Player 类,并将生成的新的实例对象赋值给变量 robot。此时的变量 robot 就是 Player 类实例化出来的实例 对象(object)。

方法定义与调用:

类的 方法 用来描述对象的 行为。

class Player:# 登记信息def sign_up(self, name, brand): self.name = name  # 登记姓名self.brand = brand      # 登记品牌print('已成功登记信息')print('+name:{}\tbrand: {}\t'.format(name, brand))

在定义类方法时,一定要把 self 参数放在参数列表第一项

继承:

定义了 Dog 类,想再定义一个它的 子类,名叫 Samoyed

# 狗狗
class Dog: pass# 萨摩耶犬
class Samoyed(Dog): pass

子类调用父类方法:

# 狗狗
class Dog:# 犬科动物有四条腿leg_num = 4# 能奔跑def run(self):print('🐕💨 狗狗快跑')# 开心的时候会摇尾巴def happy(self):print('🐕💓 狗狗开心地摇起了尾巴')
# 萨摩耶犬
class Samoyed(Dog): pass# 柯基犬
class Corgi(Dog): pass# 小白是一只萨摩耶犬
white = Samoyed()
print('小白:', end = '') # 输出“小白:”后不换行
# 小白能奔跑
white.run()# 来福是一只柯基犬
fu = Corgi()
print('来福:', end = '')
# 来福在快乐地摇尾巴
fu.happy()# 输出:
# 小白:🐕💨 狗狗快跑
# 来福:🐕💓 狗狗开心地摇起了尾巴

多态:

子类重写父类方法:

# 狗狗
class Dog:# 犬科动物有四条腿leg_num = 4# 能奔跑def run(self):print('🐕💨 狗狗快跑')# 开心的时候会摇尾巴def happy(self):print('🐕💓 狗狗开心地摇起了尾巴')# 萨摩耶犬
class Samoyed(Dog):# 重写父类中的 run() 方法def run(self):print('🐕💨💨 萨摩耶狂奔起来,像一团漂浮的云')# 柯基犬
class Corgi(Dog):def run(self):print('🐕💨 柯基飞快地摆动它的小短腿,屁股一晃一晃的')# 牧羊犬
class Collie(Dog):def run(self):print('🐕💨💨💨 牧羊犬咻地一下蹿了出去,不愧是竞速王者')

子类新增方法:

为 Samoyed 类单独设计一个 sledding() 方法:

# 狗狗
class Dog: pass# 萨摩耶犬是犬科动物
class Samoyed(Dog):# 萨摩耶会拉雪橇def sledding(self):print('🐕🛷 萨摩耶拖动雪橇,穿梭在茫茫白雪中')

相关文章:

python | 类与对象

在 Python 中,我们用关键字 class 来定义类: class Player:pass Player 类中只有一条语句 pass,这是 Python 中的特殊语句,没有实际含义。 Python 在执行到它时也什么都不会做。不过它能够保证结构的完整性。例如,我…...

基于Qt 和python 的自动升级功能

需求: 公司内部的一个客户端工具,想加上一个自动升级功能。 服务端: 1,服务端使用python3.7 ,搭配 fastapi 和uvicorn 写一个简单的服务,开出一个get接口,用于客户端读取安装包的版本&#…...

【论文阅读】IEEE Access 2019 BadNets:评估深度神经网络的后门攻击

文章目录 一.论文信息二.论文内容1.摘要2.引言3.主要图表4.结论 一.论文信息 论文题目: BadNets: Evaluating Backdooring Attacks on Deep Neural Networks(BadNets:评估深度神经网络的后门攻击) 论文来源: 2019-IEEE Access …...

Unity 让角色动起来(动画控制器)

下载素材: 导入后,找到预制体和动画。 新建动画控制器,拖动到预制体的新版动画组件上。 建立动画关系 创建脚本,挂载到预制体上。 using System.Collections; using System.Collections.Generic; using UnityEngine;public c…...

ubuntu22.04环境中安装pylint

ubuntu22.04环境中安装pylint sudo apt-get install python3-pipsudo aptitude install python3-pipsudo pip install pylint sudo apt-get install python3-pip 在安装pylint的时候,需要使用pip命令,在ubuntu22.04环境中命令如下: $ sudo …...

主流数据库的区别

几个主流的数据库有: 1. MySQL:MySQL是一种关系型数据库管理系统,常用于Web应用程序开发和数据存储。 2. Oracle:Oracle是一种关系型数据库管理系统,由Oracle Corporation开发和销售。它广泛用于企业级应用程序中。 …...

veeam备份基础

veeam的安装 将文件动态连接文件复制到veeam的安装目录中,替换掉新的文件 重新启动服务 为veeam添加证书 为veeam添加存储 其他 第一次完整备份时间会比较久 备份预览,transferred和processing date的区别 transferred后面数据为压缩比...

Flink并行度

1、Task flink中每个算子就是一个Task,比如flatMap、map、sum是一个Task。 2、SubTask 算子有几个并行度SubTask的数量就是几,比如 3、算子并行度 算子并行度指的是每个算子的并行度,可用env.setParallelism(1);设置所有算子的并行度&am…...

这届留学生是懂作弊的,ChatGPT震惊教授一整年!

ChatGPT,一款全新聊天机器人模型,成为北美科技圈的新时髦。 图片来源:New York Post 有人和它“探讨”人生,畅聊哲学,但也有人起了歪心思,用它进行学术作弊。这类新型学术不端事件引发人们关于教育的再思考…...

CVE-2023-38836 BoidCMSv.2.0.0 后台文件上传漏洞

漏洞简介 BoidCMS是一个免费的开源平面文件 CMS,用于构建简单的网站和博客,使用 PHP 开发并使用 JSON 作为数据库。它的安装无需配置或安装任何关系数据库(如 MySQL)。您只需要一个支持PHP 的Web服务器。在 BoidCMS v.2.0.0 中存…...

pf4j插件实践验证

Java系统实现插件机制,可自行通过classloader实现,亦可使用成熟的框架。pf4j是一款轻量级,扩展性强的插件,可实现插件的开发管理(插件开发、加载、卸载、更新),省略了一些基础代码的开发&#x…...

计算机组成原理之运算方法和运算器

文章目录 数据格式定点数浮点数 机器码表示原码反码补码数的补码与真值 移码IEEE754标准 数据格式 定点数 定点数就是数据的小数点的位置是固定不变的,通常将数据表示成纯小数或纯整数以 n 1 n1 n1 位数表示定点数,以 X n Xn Xn表示定点数的正负&#…...

Redux Toolkit

本文作者为 360 奇舞团前端开发工程师 阅读本文章前,需要先了解下 redux 的基本概念与用法,Redux Toolkit 是建立在 Redux 基础之上的工具包,因此需要对 Redux 的基本概念有一定的了解,包括 Action、Reducer、Store、Middleware 等…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要:在零售行业的技术进步中,开发商品识别系统扮演着关键角色。本博文详细阐述了如何利用深度学习技术搭建一个高效的商品识别系统,并分享了一套完整的代码实现。系统采用了性能强劲的YOLOv8算法,同时对YOLOv7、YOLOv6、YOLOv5等…...

在亚马逊云EC2上启动PopOS

CloudEndure遇到的挑战 自从使用CloudEndure导入win11后就一发不可收拾,然后就可以尝试新的操作系统,比如system76的Pop!_OS,虽然上是基于ubuntu进行开发的,但是在使用安装CloudEndure 的时候还是遇到的了问题,可能是因为内核很新,也可能其他的一些原因. 如果说严格按照兼容性…...

Linux运维:磁盘分区与挂载详解

Linux运维:磁盘分区与挂载详解 1、磁盘分区的原理2、查看系统中所有的磁盘设备及其分区信息3、进行磁盘分区(对于sdb新磁盘)4、格式化分区5、挂载分区(临时挂载、永久挂载)6、取消挂载分区7、删除分区 💖Th…...

jeecg 项目 springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖

springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖...

spring boot使用mybatisplus访问mysql的配置流程

网上教程大多教人新建一个带对应组件的项目,本文记录如何在一个已有springboot2.x项目中,配置使用mybatisplus来访问mysql。包括使用wrapper和自己写mapper.xml的自定义函数两种和数据库交互的方式。 关于项目的创建,参考创建springboot 2.x…...

git 如何将多个提交点合并为一个提交点 commit

文章目录 核心命令详细使用模式总结示例 核心命令 git merge branch2 是将分支branch2的提交点合并到本地当前分支。 而在执行这条命令的时候,加一个选项--squash就表示在合并的时候将多个提交点合并为一个提交点。 git merge --squash branch2 先看squash单词的意…...

[C语言] 数据存储

类型意义: 1.类型决定内存空间大小(大小决定了使用范围) 2.如何看待内存空间的视角 类型分类 整形 类型大小(字节)short2int4long4long8 浮点型 类型大小(字节)float4double8long double12 构造类型 数组结构性struct联合union枚举enum 指…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&&#xff1a;逻辑与 ||&#xff1a;逻辑或 &#xff01;&#xff1a;逻辑非 短路求值 位运算符 按位与&&#xff1a; 按位或 | 按位取反~ …...