我们可以在类内的方法定义内使用变量,而无需在方法外和类apriori内定义变量吗?

时间:2020-04-14 01:46:00

标签: python pytorch

我是pytorch和python的初学者,我一直在看一些代码示例和

我想知道在以下代码中使用d

def train_and_eval(self):
        self.entity_idxs = {d.entities[i]:i for i in range(len(d.entities))}
        self.relation_idxs = {d.relations[i]:i for i in range(len(d.relations))}

在d.entities [i]中,在定义d的代码之前,我什么都没看到。

那意味着什么?你能解释一下密码吗?我不知道我的问题是否明确,请询问是否需要额外的背景。

我也可以显示代码的开头:

class Experiment:

    def __init__(self, learning_rate=0.0005, ent_vec_dim=200, rel_vec_dim=200, 
                 num_iterations=500, batch_size=128, decay_rate=0., cuda=False, 
                 input_dropout=0.3, hidden_dropout1=0.4, hidden_dropout2=0.5,
                 label_smoothing=0.):
        self.learning_rate = learning_rate
        self.ent_vec_dim = ent_vec_dim
        self.rel_vec_dim = rel_vec_dim
        self.num_iterations = num_iterations
        self.batch_size = batch_size
        self.decay_rate = decay_rate
        self.label_smoothing = label_smoothing
        self.cuda = cuda
        self.kwargs = {"input_dropout": input_dropout, "hidden_dropout1": hidden_dropout1,
                       "hidden_dropout2": hidden_dropout2}

    def get_data_idxs(self, data):
        data_idxs = [(self.entity_idxs[data[i][0]], self.relation_idxs[data[i][1]], \
                      self.entity_idxs[data[i][2]]) for i in range(len(data))]
        return data_idxs

您看到这里他们在类的第一个方法中使用self.entity_idxs,并且在以后的任何地方都没有定义它。稍后在类中再次使用了它,这是我提供的第一个代码片段。

0 个答案:

没有答案
相关问题