2017-08-25 2 views
0

Je suis novice en Python et obtenir l'erreurET.find() prend exactement 2 arguments (3 donné)

ET.find() prend exactement deux arguments (3 donnés)

lors de l'exécution de

import xml.etree.ElementTree as ET 

ns = {'conv_svc': 'http://schemas.com/serviceconvert'}    
jobTypesXml = self.__server_request(url, None)  
root = ET.fromstring(jobTypesXml)  
for job in root.find('conv_svc:GetJobTypesResult', ns): 

Ma première question est la suivante: quel type est déduit dans l'initialisation suivante?

ns = {'conv_svc': 'http://schemas.com/serviceconvert'}    

En répondant à cela, je peux aller plus loin pour trouver l'erreur moi-même! Merci d'avance!

Répondre

2

La méthode find()only takes a single argument de sorte que vous ne pouvez pas faire tout ce que vous tentez (du moins pas avec find()).

Pour répondre à votre question, {'conv_svc': 'http://schemas.com/serviceconvert'} est un dictionnaire et serait interprété comme un argument unique. Si vous vous demandez pourquoi l'erreur indique que vous transmettez 3 arguments (ce qui n'est pas le cas), c'est parce que self est également considéré comme un argument pour les méthodes de classe.

class Testing(object): 

    def __init__(self): 
     self.a = 2 

    def do_something(self, b): 
     self.a += b 

obj = Testing() 
obj.do_something(2, 3) # Clearly passing only 2 arguments 

donne:

TypeError: do_something() takes exactly 2 arguments (3 given) 

EDIT

Merci à @ShreyashSSarnayak de remarquer que find() peut prendre an optional extra argument in Python 3. Le message d'erreur confirme que vous utilisez Python 2, mais peut-être lire de la documentation associée à Python 3.

+1

Dans python3, il faut [deux arguments] (https://docs.python.org/3/library/xml.etree .elementtree.html # xml.etree.ElementTree.Element.find) –

+0

@ShreyashSSarnayak Aha, donc l'erreur est qu'ils utilisent Python 2 et utilisent la documentation Python 3 (l'erreur affichée dans la question prouve qu'ils ne peuvent pas passer l'argument optionnel). Je vais éditer, merci. – roganjosh