在下面的代码中,编译器给出了赋值前引用的错误“localvariable shouldStoreData”。但我是先分配的。你知道吗
class MyHTMLParser(HTMLParser):
shouldStoreData = False
textPartDoc = ""
def handle_starttag(self, tag, attrs):
print "Encountered a start tag:", tag
if(tag == "title" or tag == "body"):
shouldStoreData = True
def handle_endtag(self, tag):
print "Encountered an end tag :", tag
def handle_data(self, data):
#print "Data is",data
#print "valus of storeData is:",shouldStoreData
if(shouldStoreData == True):
textPartDoc = textPartDoc + " " + data
shouldStoreData = False
我在这里要做的是,我只想在标记是title或body中的任何标记时存储数据。你知道吗
下面是一个简单的例子:
输出:
第一个
shouldStoreData
是类属性。在handle_starttag
和handle_data
中的是局部变量。在handle_data
中,在赋值之前测试变量。方法中的代码不知道class属性是否存在,除非您以类/实例属性的形式显式地访问它(例如self.shouldStoreData
或MyHTMLParser.shouldStoreData
)。你知道吗如果希望
shouldStoreData
成为实例属性,则需要编写__init__
方法并将其创建为实例属性:然后在其他方法中将其称为
self.shouldStoreData
。你知道吗您应该阅读the Python tutorial,以掌握Python中类、属性和方法的基本知识。你知道吗
相关问题 更多 >
编程相关推荐