当前位置: 首页 > 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。

http://www.lryc.cn/news/331267.html

相关文章:

  • 汽车电子行业知识:UWB技术及应用
  • Claude-3全解析:图片问答,专业写作能力显著领先GPT-4
  • Mac 如何彻底卸载Python 环境?
  • Vue 大文件切片上传实现指南包会,含【并发上传切片,断点续传,服务器合并切片,计算文件MD5,上传进度显示,秒传】等功能
  • 【VUE+ElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动
  • 重置gitlab root密码
  • v-text 和v-html
  • 学习笔记——C语言基本概念结构体共用体枚举——(10)
  • VMware虚拟机三种网络模式
  • Ai音乐大师演示(支持H5、小程序)独立部署源码
  • Windows下Docker搭建Flink集群
  • VGA显示器驱动设计与验证
  • jupyter notebook 配置默认文件路径
  • 强大缓存清理工具 NetShred X for Mac激活版
  • 在ssh 工具 Linux screen会话中使用鼠标进行上下滚动
  • Github2024-04-03 开源项目日报 Top10
  • Linux笔记之制作基于ubuntu20.4的最小OpenGL C++开发docker镜像
  • 企业为什么选择高防服务器?
  • OpenHarmony实战:轻量级系统之配置其他子系统
  • 关于VueCli项目中如何加载调试Worker和SharedWorker
  • Centos7安装单机版Kafka
  • 基于深度学习的钢材表面缺陷检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
  • 计算机网络:数据链路层 - 点对点协议PPP
  • Springboot集成token认证
  • 计算机网络_工具
  • 如何实现一个Java的@注解?
  • 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换
  • 迅饶科技 X2Modbus 网关 GetUser 信息泄露漏洞复现
  • 修改亚马逊云科技账户的密码和MFA
  • 提升性能与精准追踪:SkyWalking自定义跟踪忽略插件