代码之家  ›  专栏  ›  技术社区  ›  langlauf.io

clipspy:如何获取实例的slot字典

  •  1
  • langlauf.io  · 技术社区  · 6 年前

    这个 documentation

    ...
    klass = env.find_class('MyClass')
    instance = klass.new_instance('instance-name')
    instance['One'] = 1
    instance['Two'] = 2
    

    有没有一个内置的特性可以给我一个插槽及其值的字典?就像 .Slots() 方法 pyclips .

    像这样:

    def get_slot_dict(clips_instance):
        slot_dict = {}
        for s in clips_instance.instance_class.slots():
            slot_dict[s.name] = clips_instance[s.name]
        return slot_dict
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   noxdafox    6 年前

    clipspy 0.3.0您可以迭代对象元数据来构建数据结构。

    implied_fact = env.assert_string("(implied-fact 1 2 3)")
    list(implied_fact)
    
    [1, 2, 3]
    
    template_fact = env.assert_string("(template-fact (template-slot a-symbol))")
    
    list(template_fact)
    [('template-slot', 'a-symbol')]
    
    dict(template_fact)
    {'template-slot': 'a-symbol'}
    
    klass = env.find_class('MY-CLASS')
    instance = klass.new_instance('instance-name')
    instance['One'] = 1
    instance['Two'] = 2
    
    dict(instance)
    {'One': 1, 'Two': 2}