“ .__ class __。name__”如何工作?

时间:2019-12-14 13:14:37

标签: python-3.x class oop

我正在使用DCGAN进行pytorch codebase的人脸识别,并遇到了这段代码。

def weights_init(m):
    classname = m.__class__.__name__
    if classname.find('Conv') != -1:
        nn.init.normal_(m.weight.data, 0.0, 0.02)
    elif classname.find('BatchNorm') != -1:
        nn.init.normal_(m.weight.data, 1.0, 0.02)
        nn.init.constant_(m.bias.data, 0)

我不理解上述方法classname = m.__class__.__name__的第2行if classname.find('Conv') != -1:和第3行weights_init

1 个答案:

答案 0 :(得分:0)

为回答标题问题,Python的语言参考standard types文档对此进行了最佳解释。

我的类Hero基本上是用户定义的可调用类型,并且具有special attribute __name__。这些属性是writable,我也可以对其进行修改。

enter image description here

来自official doc的Python字符串的.find()方法引用:

  

返回找到子字符串sub的字符串中的最低索引   在切片s [start:end]中。可选参数start和end为   解释为切片表示法。如果未找到sub,则返回-1。

基本上,您的示例代码正在尝试在类名称中找到Conv,并相应地进行进一步操作。