5,504
社区成员




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__即可。