python ***模块没有某模块的属性

2020-09-09  本文已影响0人  mutang

问题:如下代码,为重现问题

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)

分析:

  1. 我反复查看代码,再debug,发现Auto.self就是没有logger
  2. 又复习一遍python 的日志模块及其封装,再做测试,结果,测试没问题,一运行这个代码还是没有日志模块
  3. 导包实在是没问题呀
  4. 为此,耗费好几天,一度想在Auto模块中写个日志代码,好气哦!谁能理解独自开发的难?

解决:

其实,非常简单的原因,Auto模块中在执行--init--时,开始调用函数,此时,程序还没有加载日志模块,故而,报出Auto模块没有logger的属性

只需要,将两问题代码顺序调换,解决!

总结:

此问题之所以出现而我难以找到问题,哪怕debug还是不明所以,纯属是我写代码的习惯不规范导致,在初始化中,应按照不变的参数,变的参数,最后调用函数,当然,最好不要在初始化模块中调用函数。

上一篇下一篇

猜你喜欢

热点阅读