今天大致记录一下自己对于python里面继承的理解,并且以下面的code为列子。
import torch as t
import time
class BasicModule(t.nn.Module):
'''
封装了nn.Module,主要是提供了save和load两个方法
'''
def __init__(self):
super(BasicModule,self).__init__()#继承父类的__init__()的方法。
self.model_name=str(type(self))# 默认名字
def load(self, path):
'''
可加载指定路径的模型
'''
self.load_state_dict(t.load(path))
def save(self, name=None):
'''
保存模型,默认使用“模型名字+时间”作为文件名
'''
if name is None:
prefix = 'checkpoints/' + self.model_name + '_'
name = time.strftime(prefix + '%m%d_%H:%M:%S.pth')
t.save(self.state_dict(), name)
return name
这几行代码首先定义了一个类 BasicModule,并且指明其父类是torch.nn.Module,所以在继承super class的时候一定要在括号里指明父类的对象,然后再def __init__()方法的时候,用了一行代码:super(Basic Module,self).__init__( )这行代码指明子类BasicModule继承父类的__init__()的方法。
注意:继承虽然可以继承父类,但是子类任然可以有自己独有的变量,这个变量你需要自己去用self.name=xx,去定义。