Python class中以`_`开头的类特殊方法

在学基础的时候没学到过(可能见过但是又忘了),在学习深度学习项目的时候遇见了很多;
以论文Multi-label learning from single positive label为例;
这些方法都是程序自行调用的,不需要(也不可以)手动调用,比如不可以写model.__init__()

init()

前后都有两个下划线_

class FCNet(torch.nn.Module):
    def __init__(self, num_feats, num_classes):
        super(FCNet, self).__init__()
        self.fc = torch.nn.Linear(num_feats, num_classes)

    def forward(self, x):
        x = self.fc(x)
        return x

这个比较简单,实在实例化的时候给对象赋初始值的;

getitem()

这个是在对象通过[]运算时会调用的方法;

class FCNet(torch.nn.Module):
    def __init__(self, num_feats, num_classes):
        super(FCNet, self).__init__()
        self.fc = torch.nn.Linear(num_feats, num_classes)

    def forward(self, x):
        x = self.fc(x)
        return x
        
    def __getitem__(self, x):
    	print("hello!")
    	return

(上面的__getitem__没什么含义,只是为了举例子)
在程序中写:

model = FCNet()
model['hh']

看打印出来是什么;

你可能感兴趣的:(Python,python,开发语言)