【问题标题】:What does this interface syntax mean in python?这个接口语法在python中是什么意思?
【发布时间】:2017-09-28 12:24:18
【问题描述】:

我在做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 。那么,为什么 dataset 可以调用它呢?

【问题讨论】:

    标签: python syntax interface


    【解决方案1】:
    1. 具有 3 个参数的 type 函数创建一个类。所以这相当于这段代码:

    class dummy(object): pass

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多