问题:如下代码,为重现问题
class Auto:
def __init__(self):
self.dr = self.init_dr()
self.speedUrl = self.getSpeedUrl()#问题
self.logger = MyLog().getLogger()#问题
def init_dr(self):
options = webdriver.ChromeOptions()
options.binary_location = "D:\Google\Chrome\Application\chrome.exe"
dr = webdriver.Chrome(options=options)
dr.maximize_window()
dr.implicitly_wait(10)
return dr
def getSpeedUrl(self):
'''可设置为显示等待'''
self.dr.get("https://www.baidu.com")
self.logger.info(self.dr.get_cookies())
if __name__ == '__main__':
url = Auto().getSpeedUrl()
print(url)
分析:
- 我反复查看代码,再debug,发现Auto.self就是没有logger
- 又复习一遍python 的日志模块及其封装,再做测试,结果,测试没问题,一运行这个代码还是没有日志模块
- 导包实在是没问题呀
- 为此,耗费好几天,一度想在Auto模块中写个日志代码,好气哦!谁能理解独自开发的难?
解决:
其实,非常简单的原因,Auto模块中在执行--init--时,开始调用函数,此时,程序还没有加载日志模块,故而,报出Auto模块没有logger的属性
只需要,将两问题代码顺序调换,解决!
总结:
此问题之所以出现而我难以找到问题,哪怕debug还是不明所以,纯属是我写代码的习惯不规范导致,在初始化中,应按照不变的参数,变的参数,最后调用函数,当然,最好不要在初始化模块中调用函数。
网友评论