python笔记:super(),__getitem()__,__call()__

目录

Q1:super(NetworkBlock, self).__init__()什么意思

Q2:__call__() 类的实例圆括号自动调用

Q3:__getitem__() 类的实例 方括号自动调用

Q4:没有双下划线方法时,普通的调用类的方法

总结


Q1:super(NetworkBlock, self).__init__()什么意思

class NetworkBlock(nn.Module):
    # 定义网络块,由多个BasicBlock组成
    def __init__(self, nb_layers, in_planes, out_planes, block, stride, dropRate=0.0):
        # 初始化网络块
        super(NetworkBlock, self).__init__()
  1. (父类是谁)`NetworkBlock`类的父类是`nn.Module`
  2. (类的继承)`NetworkBlock`类是通过继承`nn.Module`类而创建的。
  3. (调用父类的构造函数,初始化父类的实例)通过调用`super(NetworkBlock, self).__init__()`,实际上是在调用`nn.Module`类的构造函数,以确保在创建`NetworkBlock`对象时正确地初始化`nn.Module`类的相关属性和方法。
  4. (调用父类的构造函数,初始化父类的实例)`super(NetworkBlock, self).__init__()`这行代码的意思是调用父类(或者超类)的`__init__`方法,它是用来初始化父类的实例。
  5. 构造函数和初始化函数是一个东西

类的继承

调用父类的构造函数,并初始化父类的实例

Q2:__call__() 类的实例圆括号自动调用

class Greeter:
    def __init__(self, name):
        self.name = name

    def __call__(self):
        print(f"Hello, {self.name}!")

# 创建一个Greeter类的实例
greeter = Greeter("Alice")

# 调用实例,实际上会调用__call__()方法
greeter()

Q3:__getitem__() 类的实例 方括号自动调用

class CustomList:
    def __init__(self):
        self.items = []

    def __getitem__(self, index):
        return self.items[index]

    def __len__(self):
        return len(self.items)

    def add_item(self, item):
        self.items.append(item)

# 创建一个CustomList类的实例
my_list = CustomList()

# 添加一些元素到列表中
my_list.add_item("Apple")
my_list.add_item("Banana")
my_list.add_item("Orange")

# 使用[]索引操作访问元素,实际上会调用__getitem__()方法
print(my_list[1])  # 输出:Banana

Q4:没有双下划线方法时,普通的调用类的方法

传参数看init

调用方法加.(点)

class Person:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print(f"Hello, my name is {self.name}!")

# 创建一个Person类的实例
person = Person("Alice")

# 调用实例的方法来实现类似调用的效果
person.greet()

总结

类的实例叫对象

类的实例初始化时,需要传的参数,要看init

对象 = 类(......)   ....需要看init需要什么

对象调用类的方法

 __call__()方法:对象()

__getitem__()方法:对象[]

对象使用类的普通方法:

对象.啥啥啥    啥啥啥是类定义的

双下划线:魔术方法,严格的私有方法

单下划线:不严格的私有方法

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值