python类的私有方法和属性(即前面加__(或_)的方法或属性):
解释:类的私有方法和属性,可以由类内部的方法来访问,但是不可以由类的实例对象来访问。若类的实例对象想直接访问私有方法或属性,则需要:实例._类名__变量名的形式。
参考:https://www.cnblogs.com/randomlee/p/9026105.html
python类的继承与扩展:
解释:可以通过将super().方法名X(参数)放在子类同名方法X的适当位置来对父类方法X的全部内容进行继承,然后可以进行扩展。(注意,在父类方法中定义的类属性,在子类中继续可用)
参考:https://blog.csdn.net/hef97/article/details/118418747
python中的forward问题:
解释:(1)python通过类名来创建对象(这时会调用类的初始化函数),而通过实例化对象会自动调用内置的__call__()函数。因此,我们可以重写__call__()函数,来实现具体的操作,最常见的就是将参数传入forward()来进行操作。
(2)至于nn.Module,同样是有__call()__函数调用了farword()函数。因此,我们可以直接通过实例化对象来执行forward()函数。但是,由于__call()__函数内很多信息(不仅仅是forward()函数)需要nn.Module.__init()__来初始化,如果不继承nn.Module.__init()__而重写__init()__导致__call()__无法正常运行,进而无法调度forward()。因此,在继承nn.Module时,一定要继承nn.Module.__init()__
参考:https://zhuanlan.zhihu.com/p/357021687