该接口语法在Python中是什么意思



我正在做CS224N的sizgment.in函数 test_word2vec,有一些python语法我不明白:

""" Interface to the dataset for negative sampling """
dataset = type('dummy', (), {})()
def dummySampleTokenIdx():
    return random.randint(0, 4)
def getRandomContext(C):
    tokens = ["a", "b", "c", "d", "e"]
    return tokens[random.randint(0,4)], 
        [tokens[random.randint(0,4)] for i in xrange(2*C)]
dataset.sampleTokenIdx = dummySampleTokenIdx
dataset.getRandomContext = getRandomContext

问题一: dataset = type('dummy', (), {})()是什么意思?

问题第二:在dataset.sampleTokenIdx = dummySampleTokenIdx中,我认为dataset没有属性sampleTokenIdx。那么,数据集为什么可以调用它?

  1. 带有3个参数的类型函数创建一个类。因此,这将等同于此代码:

class dummy(object): pass

  1. 在Python中,您可以随时将属性添加到对象。如果尚未存在,它将被创建,从本质上插入代表对象属性的dict中。

最新更新