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

# 使用默认分隔符(空白字符)
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 = 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。

相关推荐

  1. Python整理Python知识复习

    2024-04-04 07:58:01       13 阅读
  2. Python:核心知识整理大全5-笔记

    2024-04-04 07:58:01       37 阅读
  3. Python:核心知识整理大全7-笔记

    2024-04-04 07:58:01       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 07:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 07:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 07:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 07:58:01       18 阅读

热门阅读

  1. wordvect嵌入和bert嵌入的区别

    2024-04-04 07:58:01       13 阅读
  2. 运动伤害预防的实际案例

    2024-04-04 07:58:01       13 阅读
  3. 一次Postgres的实体表重构经历

    2024-04-04 07:58:01       14 阅读
  4. 走近Shiro--一起学习吧之架构

    2024-04-04 07:58:01       13 阅读
  5. 速盾:服务器有cdn 带宽上限建议多少

    2024-04-04 07:58:01       15 阅读
  6. Go实现MapReduce

    2024-04-04 07:58:01       13 阅读
  7. Spark面试整理-讨论DataFrame和DataSet的区别

    2024-04-04 07:58:01       14 阅读
  8. 文心一言 vs GPT-4 —— 全面横向比较

    2024-04-04 07:58:01       15 阅读