这个接口语法在python中意味着什么?

时间:2017-05-01 01:33:44

标签: python syntax interface

我正在做cs224n's assignment。在函数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 个答案:

答案 0 :(得分:4)

  1. 带有3个参数的type函数创建一个类。所以这相当于这段代码:
  2. class dummy(object): pass

    1. 在Python中,您可以随时向对象添加属性。如果它不存在,它将被创建,基本上插入到表示对象属性的字典中。