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

【Python整理】 Python知识点复习

1.Python中__init__()中声明变量必须都是self吗?

在Python中的类定义里,init() 方法是一个特殊的方法,称为类的构造器。在这个方法中,通常会初始化那些需要随着对象实例化而存在的实例变量。使用 self 是一种约定俗成的方式来引用实例本身。

这里有一些关键点:

并不是 init() 中声明的所有变量都必须以 self 开头。以 self 开头的变量是实例变量,它们对每一个类的实例都是唯一的。但是,你也可以在 init() 中声明局部变量,它们不以 self 开头,仅在这个方法的执行过程中存在。

只有那些需要跨方法在类实例之间共享的变量应该使用 self 前缀。这意味着这些变量将被附加到对象上并且对整个实例可用。

使用 self 的变量可以在类的其他方法中使用,因为它们是与特定的对象关联的。

下面是一个简单的例子来说明这个概念:

class MyClass:def __init__(self, value):self.instance_var = value  # 这是一个实例变量local_var = 'some value'   # 这是一个在__init__方法中的局部变量def another_method(self):print(self.instance_var)  # 正确: 可以访问实例变量# print(local_var)        # 错误: local_var 在这里是不可见的,因为它是 __init__ 的局部变量

在这个例子中,instance_var 是一个以 self 开头的实例变量,而 local_var 是 init() 方法中的一个局部变量。只有 instance_var 可以在类的其他方法中被访问和修改。

2.(1)python中__getitem__函数用法:主管索引

在Python中,__getitem__方法是一个特殊方法(也称作魔术方法),它用于定义对象的索引操作,也就是当对象使用中括号语法(例如obj[key])来获取某个元素时,会调用这个方法。这个方法的使用让你的对象支持序列和映射的数据模型。

class MyCollection:def __init__(self, data):self.data = datadef __getitem__(self, key):return self.data[key]# 现在创建一个MyCollection类的实例
collection = MyCollection([1, 2, 3, 4, 5])# 使用索引来访问元素
print(collection[1])  # 输出: 2
print(collection[2])  # 输出: 3# 也可以使用切片
print(collection[1:3])  # 输出: [2, 3]

3.python中字符串的split方法

在Python中,字符串对象有一个方法叫做 split(),它用于将字符串拆分成一个列表。默认情况下,该方法会使用空白字符(如空格、换行 \n、制表符 \t 等)作为分隔符,来分割字符串。你也可以指定一个字符串作为分隔符。

下面是 split() 方法的一些使用示例:

# 使用默认分隔符(空白字符)
text = "Hello world"
result = text.split()
print(result)  # 输出: ['Hello', 'world']# 使用指定的分隔符
data = "apple,banana,cherry"
result = data.split(',')
print(result)  # 输出: ['apple', 'banana', 'cherry']# 限制分割次数
data = "one two three four"
result = data.split(' ', 2)
print(result)  # 输出: ['one', 'two', 'three four']# 使用换行符作为分隔符
data = "line1\nline2\nline3"
result = data.split('\n')
print(result)  # 输出: ['line1', 'line2', 'line3']

使用完分割后成为列表,可以紧跟[0]来读取列表中的元素。如下所示是先按照"_"分割,然后读取列表中的第一个元素。

label = target_dir.split("_")[0]

4.python中__call__()函数

在Python中,call()是一个特殊的方法,用于使一个对象可以像函数一样被调用。当我们调用一个对象时,Python会尝试调用该对象的__call__()方法。

下面是一个简单的示例,展示了如何定义一个类并实现__call__()方法:

class Person():def __call__(self, name):print("Hello,"+name)def Hello(self, name):print("Hello,"+ name)person = Person()
person("aa")        # Hello,aa
person.Hello("aa")  # Hello,aa

通过在类中实现__call__()方法,我们可以让对象具备函数的行为,使其可以被调用并执行特定的逻辑。这对于创建可调用的对象非常有用,特别是在某些情况下,我们希望对象能够像函数一样被使用

5.Python中forward方法

在Python中,特别是在使用PyTorch这样的深度学习库时,forward 方法通常是一个类的成员函数,它定义了模型前向传播的计算过程。在PyTorch中,当你创建一个网络模型时,你通常会继承 nn.Module 基类,并在你的模型类中定义 forward 方法。

6.Python中super().init():继承

当你在一个子类的 init 方法中调用 super().init(),你实际上是在调用它的父类的 init 方法。这确保了父类被正确初始化,这样子类实例就可以继承父类的所有属性和方法。

7.Python继承

# 定义父类
class Animal:def __init__(self, species):self.species = speciesdef make_sound(self):print("Some generic sound")# 定义子类,继承自 Animal 类
class Dog(Animal):def __init__(self, species, name):super().__init__(species)  # 调用父类的 __init__ 方法self.name = namedef make_sound(self):print("Woof!")# 使用父类创建实例
generic_animal = Animal("Generic")
generic_animal.make_sound()  # 输出: Some generic sound# 使用子类创建实例
my_dog = Dog("Canine", "Buddy")
my_dog.make_sound()  # 输出: Woof!
print(my_dog.species)  # 输出: Canine
print(my_dog.name)  # 输出: Buddy

print(my_dog.species) 这一步子类继承了父类的属性,可以调用输出species。

相关文章:

【Python整理】 Python知识点复习

1.Python中__init__()中声明变量必须都是self吗? 在Python中的类定义里,init() 方法是一个特殊的方法,称为类的构造器。在这个方法中,通常会初始化那些需要随着对象实例化而存在的实例变量。使用 self 是一种约定俗成的方式来引用实例本身。…...

汽车电子行业知识:UWB技术及应用

文章目录 1.什么是UWB技术1.1.UWB测距原理1.2.UWB数据传输原理2.汽车UWB技术应用2.1.UWB雷达2.1.1.信道的冲击响应CIR2.2.舱外检测目标2.3.舱内检测活体2.3.1.活体检测原理2.4.脚踢尾箱开门2.4.1.脚踢检测原理1.什么是UWB技术 UWB(ultra wideband)也叫超宽带技术,是一种使用…...

Claude-3全解析:图片问答,专业写作能力显著领先GPT-4

人工智能技术的飞速发展正在深刻改变着我们的工作和生活方式。作为一名资深的技术爱好者,我最近有幸体验了备受瞩目的AI助手Claude-3。这款由Anthropic公司推出的新一代智能工具展现出了非凡的实力,尤其在图像识别和专业写作领域的表现更是让人眼前一亮&…...

Mac 如何彻底卸载Python 环境?

第一步:首先去应用程序文件夹中,删除关于Python的所有文件; 第二步:打开terminal终端,输入下面命令查看versions下有哪些python版本; ls /library/frameworks/python.framework/versions第三步&#xff1…...

Vue 大文件切片上传实现指南包会,含【并发上传切片,断点续传,服务器合并切片,计算文件MD5,上传进度显示,秒传】等功能

Vue 大文件切片上传实现指南 背景 在Web开发中,文件上传是一个常见的功能需求,尤其是当涉及到大文件上传时,为了提高上传的稳定性和效率,文件切片上传技术便显得尤为重要。通过将大文件切分成多个小块(切片&#xff0…...

【VUE+ElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动

【VUEElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动 背景 当设置了几个固定列之后,表格无数据时,点击左侧滚动条却被遮挡,原因是el-table__fixed过高导致的 解决 在index.scss中直接加入以下代码即可 /* 设置默认高…...

重置gitlab root密码

gitlab-rails console -e production user User.where(id: 1).first user User.where(name: "root").first #输入重置密码命令 user.password"admin123!" #再次确认密码 user.password_confirmation"admin123!" #输入保存命令&am…...

v-text 和v-html

接下来&#xff0c;我讲介绍一下v-text和v-html的使用方式以及它们之间的区别。 使用方法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-widt…...

学习笔记——C语言基本概念结构体共用体枚举——(10)

1、结构体 定义新的数据类型&#xff1a; 数据类型&#xff1a;char short int long float double 数组 指针 结构体 结构体&#xff1a; 新的自己定义的数据类型 格式&#xff1a; struct 名字{ 成员 1&#xff1b; 成员 2&#xff1b; 。 。 。 …...

VMware虚拟机三种网络模式

VMware虚拟机提供了三种主要的网络连接模式&#xff0c;它们分别是&#xff1a; 桥接模式&#xff08;Bridged Mode&#xff09;网络地址转换模式&#xff08;NAT Mode&#xff09;仅主机模式&#xff08;Host-Only Mode&#xff09; 1. 桥接模式&#xff08;Bridged Mode&am…...

Ai音乐大师演示(支持H5、小程序)独立部署源码

Ai音乐大师演示&#xff08;支持H5、小程序&#xff09;独立部署源码...

Windows下Docker搭建Flink集群

编写docker-compose.yml 参照&#xff1a;https://github.com/docker-flink/examples/blob/master/docker-compose.yml version: "2.1" services:jobmanager:image: flink:1.14.4-scala_2.11expose:- "6123"ports:- "18081:8081"command: jobma…...

VGA显示器驱动设计与验证

1.原理 场同步信号的单位是像素点 场同步信号的单位是一行 60的含义是每秒钟刷新60帧图像 全0表示黑色 2.1 CLK_gen.v module CLK_gen(input wire sys_clk ,input wire sys_rst_n ,output wire CLK_out ,output wire locked );parameter STATE1b0; reg [1:0] cnt; r…...

jupyter notebook 配置默认文件路径

Jupyter是一种基于Web的交互式计算环境&#xff0c;支持多种编程语言&#xff0c;如Python、R、Julia等。使用Jupyter可以在浏览器中编写和运行代码&#xff0c;同时还可以添加Markdown文本、数学公式、图片等多种元素&#xff0c;非常适合于数据分析、机器学习等领域。 安装 …...

强大缓存清理工具 NetShred X for Mac激活版

NetShred X for Mac是一款专为Mac用户设计的强大缓存清理工具&#xff0c;旨在帮助用户轻松管理和优化系统性能。这款软件拥有直观易用的界面&#xff0c;即使是初次使用的用户也能快速上手。 软件下载&#xff1a;NetShred X for Mac激活版下载 NetShred X能够深入扫描Mac系统…...

在ssh 工具 Linux screen会话中使用鼠标进行上下滚动

经过几次发现 除xshell外&#xff0c; WindTerm finalshell MobaXterm 都是进入会话后&#xff0c;发现其界面无法滚动屏幕向上查看 如果想要在Linux screen会话中使用鼠标进行上下滚动。必须首先进入该screen的回滚(scrollback模式)才能进行上下滚动 第一步&#xff…...

Github2024-04-03 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-03统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目2Jupyter Notebook项目2C++项目1Shell项目1Go项目1非开发语言项目1Rust项目1从零开始构建你喜爱的技术 创建周期:21…...

Linux笔记之制作基于ubuntu20.4的最小OpenGL C++开发docker镜像

Linux笔记之制作基于ubuntu20.4的最小OpenGL C开发docker镜像 —— 2024-04-03 夜 code review! 文章目录 Linux笔记之制作基于ubuntu20.4的最小OpenGL C开发docker镜像1.这里把这本书的例程代码放在了Dockerfile所在的文件夹内以使镜像预装例程代码2.创建Dockerfile3.构建Do…...

企业为什么选择高防服务器?

高防服务器顾名思义就是一种具有高度安全性的服务器&#xff0c;有着很高的防御能力&#xff0c;可以提供更加安全可靠的服务&#xff0c;能够有效地避免分布式拒绝服务攻击和其它的网络安全威胁&#xff0c;以下就是企业选择高防服务器的原因。 高防服务器在硬件安全方面有着很…...

OpenHarmony实战:轻量级系统之配置其他子系统

除上述子系统之外&#xff0c;还有一些必要但是无需进行移植的子系统。如&#xff1a;分布式任务调度子系统、DFX子系统。 这些子系统添加方式比较简单&#xff0c;在“vendor/MyVendorCompany/MyProduct/config.json”文件中进行如下配置即可&#xff1a; {"subsystem&…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

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

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

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...