10,172
社区成员
发帖
与我相关
我的任务
分享
class UrlManager():
def __int__(self,new_urls,old_urls):
self.new_urls = set()
self.old_urls = set()
def add_new_url(self,url):
if url is None or len(url) == 0:
return
if url in self.new_urls or url in self.old_urls:
return
self.new_urls.add(url)
def add_new_urls(self,urls):
if urls is None or len(urls) == 0:
return
for url in urls:
self.add_new_url(url)
def get_url(self):
if self.has_new_url():
url = self.new_urls.pop()
self.old_urls.add(url)
return url
else:
return None
def has_new_url(self):
return len(self.new_urls) > 0
if __name__ == "__main__":
url_manger = UrlManager()
url_manger.add_new_url("url1")
url_manger.add_new_urls(["url1","url2"])
print(url_manger.new_urls,url_manger.old_urls)
print("#*30")
new_url = url_manger.get_url()
print(url_manger.new_urls,url_manger.old_urls)
print("#" * 30)
new_url = url_manger.get_url()
print(url_manger.new_urls,url_manger.old_urls)
print("#" * 30)
print(url_manger.hae_new_url())
运行后报错:Traceback (most recent call last):
File "D:\爬虫\utils\url_manager.py", line 31, in <module>
url_manger.add_new_url("url1")
File "D:\爬虫\utils\url_manager.py", line 9, in add_new_url
if url in self.new_urls or url in self.old_urls:
AttributeError: 'UrlManager' object has no attribute 'new_urls'
检查了好几次,没有发现错误在哪里,求各位老师指点一下
问题应该是在定义类的构造方法时,__init__错写成__int__引起的。因此,在构造方法中,没有正确实例化new_urls和old_urls属性,导致后面调用时出现了AttributeError错误。将构造方法中的__int__改为__init__即可。