clipspy: Как получить слот словарь экземпляра

1

Документация содержит этот пример кода:

...
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
Теги:
clips
clipspy

1 ответ

1
Лучший ответ

Так как 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}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню