2013-08-03 16 views
1

我试图强制自己理解如何使用类。我的代码变得更长,更混乱。我希望利用班会帮我清理一些如何正确创建类中的方法

from lxml import html 

Class Header(object): 
    def __init__(self,file_reference) 
     self.header = open(file_reference).read() 

    def filing_type(self): 
     tree = html.fromstring(self) 
     for element in tree.iter(): 
      if element.tag == 'type': 
       return element.text.strip() 

,所以我有一个特定的文件

myref = 'correct_file_path' 
test_header = Header(myref) 

的参考,当我做一个目录(test_header)我看到我的filing_type功能列表。然而,当我运行

test_header.filing_type() 

我得到一个类型错误

TypeError: 'Header' object is not subscriptable 
+0

你不应该在做'tree = html.fromstring(self.header)'吗? – Blender

+0

@Blender谢谢我没有尝试过这种变化,但它工作,但是zhangyangyu提供了答案,所以我必须把它给他。 – PyNEwbie

+0

另外,除了存储一个变量和存储方法之外,您的类是否还有其他操作? – Blender

回答

3

您应该使用tree = html.fromstring(self.header)。看起来你的returnfilling_type是错误的,因为它只会返回第一个标签的内容(也许你只是想要这个)。也许你可以使用一个列表来存储所有的类型标签或使用yield。

+0

谢谢只有一个类型标记所以我对此很好。 – PyNEwbie