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()
Тот факт, что у вас есть (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 }}