【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第三步࿱…...

Vue 大文件切片上传实现指南包会,含【并发上传切片,断点续传,服务器合并切片,计算文件MD5,上传进度显示,秒传】等功能
Vue 大文件切片上传实现指南 背景 在Web开发中,文件上传是一个常见的功能需求,尤其是当涉及到大文件上传时,为了提高上传的稳定性和效率,文件切片上传技术便显得尤为重要。通过将大文件切分成多个小块(切片࿰…...

【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
接下来,我讲介绍一下v-text和v-html的使用方式以及它们之间的区别。 使用方法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-widt…...
学习笔记——C语言基本概念结构体共用体枚举——(10)
1、结构体 定义新的数据类型: 数据类型:char short int long float double 数组 指针 结构体 结构体: 新的自己定义的数据类型 格式: struct 名字{ 成员 1; 成员 2; 。 。 。 …...
VMware虚拟机三种网络模式
VMware虚拟机提供了三种主要的网络连接模式,它们分别是: 桥接模式(Bridged Mode)网络地址转换模式(NAT Mode)仅主机模式(Host-Only Mode) 1. 桥接模式(Bridged Mode&am…...

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

Windows下Docker搭建Flink集群
编写docker-compose.yml 参照: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的交互式计算环境,支持多种编程语言,如Python、R、Julia等。使用Jupyter可以在浏览器中编写和运行代码,同时还可以添加Markdown文本、数学公式、图片等多种元素,非常适合于数据分析、机器学习等领域。 安装 …...

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

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

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…...
企业为什么选择高防服务器?
高防服务器顾名思义就是一种具有高度安全性的服务器,有着很高的防御能力,可以提供更加安全可靠的服务,能够有效地避免分布式拒绝服务攻击和其它的网络安全威胁,以下就是企业选择高防服务器的原因。 高防服务器在硬件安全方面有着很…...

OpenHarmony实战:轻量级系统之配置其他子系统
除上述子系统之外,还有一些必要但是无需进行移植的子系统。如:分布式任务调度子系统、DFX子系统。 这些子系统添加方式比较简单,在“vendor/MyVendorCompany/MyProduct/config.json”文件中进行如下配置即可: {"subsystem&…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

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. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
docker 部署发现spring.profiles.active 问题
报错: 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 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

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