2017-08-25 74 views
0

我在Python新手,得到错误ET.find()到底需要2个参数(3给出)

ET.find()到底需要2个参数(3给出)

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): 

我的第一个问题,在执行过程中

是:什么类型在下面的初始化推导?

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

回答此问题,我可以进一步自行找出错误! 在此先感谢!

回答

2

find()方法only takes a single argument所以你不能做任何你试图做的事情(至少不要用find())。

要回答你的问题,{'conv_svc': 'http://schemas.com/serviceconvert'}是一个字典,将被解释为一个单一的参数。如果你想知道为什么错误指出你传递了3个参数(你不知道),那是因为self也被认为是类方法的一个参数。

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 

给出:

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

编辑

感谢@ShreyashSSarnayak用于指出find()可以采取an optional extra argument in Python 3。该错误消息确认您正在使用Python 2,但可能正在阅读与Python 3相关的一些文档。

+1

在python3中,它需要[两个参数](https://docs.python.org/3/library/xml.etree .elementtree.html#xml.etree.ElementTree.Element.find) –

+0

@ShreyashSSarnayak啊哈,所以错误在于他们使用Python 2并使用Python 3文档(问题中发布的错误证明他们无法通过可选参数)。我会编辑,谢谢。 – roganjosh

相关问题