class Net(nn.Module):def __init__(self):super(Net,self).__init__()
python中的super(Net, self).init()
首先找到Net的父類(比如是類nn.Module),然后把類Net的對象self轉換為類nn.Module的對象,然后“被轉換”的類nn.Module對象調用自己的init函數
這是對繼承自父類的屬性進行初始化。而且是用父類的初始化方法來初始化繼承的屬性。
也就是說,子類繼承了父類的所有屬性和方法,父類屬性自然會用父類方法來進行初始化。
當然,如果初始化的邏輯與父類的不同,不使用父類的方法,自己重新初始化也是可以的。比如:
#!/usr/bin/env python
# -*- coding:utf-8 -*-class Person(object):def __init__(self,name,gender,age):self.name = nameself.gender = genderself.age = ageclass Student(Person):def __init__(self,name,gender,age,school,score):#super(Student,self).__init__(name,gender,age)self.name = name.upper() self.gender = gender.upper()self.school = schoolself.score = scores = Student('Alice','female',18,'Middle school',87)
print s.school
print s.name
上面例子,父類對name和gender的初始化只是簡單的賦值,但子類要求字母全部大寫。
來源:https://blog.csdn.net/wltsysterm/article/details/104440387