这个接口语法在python中是什么意思?

Rac*_*fer 3 python syntax interface

我正在做cs224n 的赋值。在函数中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
Run Code Online (Sandbox Code Playgroud)

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

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

Kat*_*Kat 5

  1. 带有 3 个参数的type函数创建一个类。所以这相当于这个代码:

class dummy(object): pass

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