【Python整理】 Python知识点复习

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

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

这里有一些关键点:

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

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

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

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

python 复制代码
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])来获取某个元素时,会调用这个方法。这个方法的使用让你的对象支持序列和映射的数据模型。

python 复制代码
class MyCollection:
    def __init__(self, data):
        self.data = data

    def __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() 方法的一些使用示例:

python 复制代码
# 使用默认分隔符(空白字符)
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]来读取列表中的元素。如下所示是先按照"_"分割,然后读取列表中的第一个元素。

python 复制代码
label = target_dir.split("_")[0]

4.python中__call__()函数

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

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

python 复制代码
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继承

python 复制代码
# 定义父类
class Animal:
    def __init__(self, species):
        self.species = species

    def make_sound(self):
        print("Some generic sound")

# 定义子类,继承自 Animal 类
class Dog(Animal):
    def __init__(self, species, name):
        super().__init__(species)  # 调用父类的 __init__ 方法
        self.name = name

    def 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。

关于super这一步继承,在深度学习视频中看到super(Tudui, self).init ()这样子写,根据Python3中的语法现在已经不需要在super()中具体指明继承哪一个对象了

但是父类中的属性要卸载后面的__init__()括号中,父类有几个就写几个,跟cpp是一样的

相关推荐
兆。几秒前
掌握 PyQt5:从零开始的桌面应用开发
开发语言·爬虫·python·qt
尘浮生3 分钟前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
明月看潮生23 分钟前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
南宫理的日知录34 分钟前
99、Python并发编程:多线程的问题、临界资源以及同步机制
开发语言·python·学习·编程学习
coberup43 分钟前
django Forbidden (403)错误解决方法
python·django·403错误
逊嘘1 小时前
【Java语言】抽象类与接口
java·开发语言·jvm
Half-up1 小时前
C语言心型代码解析
c语言·开发语言
龙哥说跨境1 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
Source.Liu1 小时前
【用Rust写CAD】第二章 第四节 函数
开发语言·rust
monkey_meng1 小时前
【Rust中的迭代器】
开发语言·后端·rust