AttributeError: instance has no attribute
AttributeError: instance has no attribute
这似乎是 Python 中的一个常见错误,我发现很多人都在询问类似的问题,但最后(很长一段时间)都在尝试那些似乎适用的解决方案,并且运气不好,所以求助于找出我所缺少的东西。
我收到 AttributeError: WebHandler 实例没有属性 'search_str'
这似乎是一个特定的方法,每当我从这个方法调用 ___init___ 中设置的任何 class 变量时,我都会收到这个错误。我已经将它作为一个简单的函数而不是 class 方法提取到一个测试文件中并且它工作正常,我已经尝试重新缩进几次以确保不是那样,所以我我对此一头雾水。
我正在使用 Python 2.7 和 TextWrangler,如果其中任何一个有用的话(TextWrangler 在 3 年里没有给我任何问题,但我认为应该包括任何东西)
import requests
import re
class WebHandler():
def ___init___(self):
self.urllist = []
self.search_str = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', re.I|re.M)
def set_urls(self, test, data):
for line in test[11:]:
if (("even" in line) or ("odd" in line)):
match = re.search(self.search_str, line)
self.urllist.append(match.group(0))
我尝试过的另一件事是,如果我从 ___init___ 复制属性并简单地将它们设为 set_urls() 并在没有 self 的情况下调用它们,这样它就可以正常工作并且不会抛出任何错误,这让我更加困惑。
不知道我错过了什么。谢谢!
你拥有的这个:
def ___init___(self):
与实例化对象时调用的调用不同:
def __init__(self):
不同之处在于 三个 下划线位于 init
的两边,而两个下划线是必需的。
你的初始化函数有三个下划线:
def ___init___(self):
def __init__(self):
如现在所写,创建新对象时不会调用它。
这似乎是 Python 中的一个常见错误,我发现很多人都在询问类似的问题,但最后(很长一段时间)都在尝试那些似乎适用的解决方案,并且运气不好,所以求助于找出我所缺少的东西。
我收到 AttributeError: WebHandler 实例没有属性 'search_str'
这似乎是一个特定的方法,每当我从这个方法调用 ___init___ 中设置的任何 class 变量时,我都会收到这个错误。我已经将它作为一个简单的函数而不是 class 方法提取到一个测试文件中并且它工作正常,我已经尝试重新缩进几次以确保不是那样,所以我我对此一头雾水。
我正在使用 Python 2.7 和 TextWrangler,如果其中任何一个有用的话(TextWrangler 在 3 年里没有给我任何问题,但我认为应该包括任何东西)
import requests
import re
class WebHandler():
def ___init___(self):
self.urllist = []
self.search_str = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', re.I|re.M)
def set_urls(self, test, data):
for line in test[11:]:
if (("even" in line) or ("odd" in line)):
match = re.search(self.search_str, line)
self.urllist.append(match.group(0))
我尝试过的另一件事是,如果我从 ___init___ 复制属性并简单地将它们设为 set_urls() 并在没有 self 的情况下调用它们,这样它就可以正常工作并且不会抛出任何错误,这让我更加困惑。
不知道我错过了什么。谢谢!
你拥有的这个:
def ___init___(self):
与实例化对象时调用的调用不同:
def __init__(self):
不同之处在于 三个 下划线位于 init
的两边,而两个下划线是必需的。
你的初始化函数有三个下划线:
def ___init___(self):
def __init__(self):
如现在所写,创建新对象时不会调用它。