2013-08-03 46 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