Получи скандал от толстого ансибла

Python также имеет super :

super(type[, object-or-type])

Возвращает прокси-объект, который делегирует вызовы методов родителям или родственникам класс типа. Это полезно для доступа к унаследованным методам, которые были переопределены в классе. Порядок поиска такой же, как и для getattr (), за исключением того, что сам тип пропускается.

Пример:

class A(object):     # deriving from 'object' declares A as a 'new-style-class'
    def foo(self):
        print "foo"

class B(A):
    def foo(self):
        super(B, self).foo()   # calls 'A.foo()'

myB = B()
myB.foo()

0
задан Matthew L Daniel 6 March 2019 в 05:40
поделиться

1 ответ

Тот факт, что у вас есть (item=delete-after-tests) в выходных данных, означает, что вы обманули нас, не включив with_items:, который почти наверняка скрывается над вашей register: output_dhcp строкой.

Когда у вас есть оператор with_, он упаковывает фактический результат в список results, на который вы как бы намекнули с помощью output_dhcp.results.msg, но вы не можете запросить поле .msg из list ; вам нужно извлечь атрибут каждого члена списка, который map сделает для вас:

- debug:
    msg: '{{ output_dhcp.results | map(attribute="msg") | list }}'

Но если вы хотите 108 выражения VM 108, вам понадобится использовать regex_replace для его извлечения, но, по-видимому, только в элементах списка, которые могут ему соответствовать, например:

- debug:
    msg: >-
     {{ output_dhcp.results 
      | selectattr("msg", "match", "VM [0-9]+ .*")
      | map("regex_replace", ".*VM ([0-9]+) .*", "\\1")
      | first }}
0
ответ дан Matthew L Daniel 6 March 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: