2015-03-19 3 views
1

Мне нужно удалить атрибут из объекта Dictionary. Я пытаюсь сделать это с помощью «del», но это не работает для меня.Удаление атрибута из словаря

from suds.client import Client 
from sys import argv 

cmserver = '***my-server-host-name***' 
cmport = '8443' 
wsdl = 'file:///code/AXL/axlsqltoolkit/schema/10.5/AXLAPI.wsdl' 
location = 'https://' + cmserver + ':' + cmport + '/axl/' 
username = argv[1] 
password = argv[2] 

client = Client(url=wsdl,location=location, username=username, password=password) 
result = client.service.getPhone(name='SEP64AE0CF74D0A') 
del result['_uuid'] 

Кодекс терпит неудачу с:

Traceback (most recent call last): 
    File "AXL-Get-Phone.py", line 27, in <module> 
    del result['_uuid'] 
AttributeError: __delitem__ 

образца [print(str(result))] Выход объекта Я пытаюсь удалить '_uuid' от:

(reply){ 
    return = 
     (return){ 
      phone = 
       (RPhone){     
        _uuid = "{D1246CFA-E02D-0731-826F-4B043CD529F1}" 
+0

Можете ли вы дать ** ** сырой выход 'печати (результат)'? –

+0

В вашем коде есть проблема, результат не определен, когда вы вызываете 'dict (result)'. Вероятно, объект, возвращенный client.service.getPhone, не является соответствующим типом, а объектом, предоставляющим функцию '__getitem__'. В этом случае возможно, что функция '__delitem__' не предусмотрена. – Cilyan

+0

Фактически, я удалил эту строку и получил ту же ошибку. Код такой: result = client.service.getPhone (name = 'SEP64AE0CF74D0A') del result ['_ uuid'] Я попытался заставить объект использовать тип словаря, но это никому не помогает. –

ответ

0

Во-первых, вам нужно для преобразования результатов в dict. Существует метод suds.client.Client класса dict, который сделает это за вас. См. Документацию для suds.client.Client.

result = Client.dict(client.service.getPhone(name='SEP64AE0CF74D0A')) 
del result['_uuid'] 

Кроме того, вы можете просто быть в состоянии удалить атрибут _uuid, например:

result = client.service.getPhone(name='SEP64AE0CF74D0A') 
del result._uuid 
+0

Патрик, спасибо человеку! Второй метод работает: 'result = client.service.getPhone (name = 'SEP64AE0CF74D0A'); result2 = result ['return'] ['phone']; del result2._uuid; ' –

Смежные вопросы