python显示没有这个模块_python ***模块没有某模块的属性

本文分享了一位开发者在Python项目中遇到的日志模块初始化问题及解决方案。问题出现在尝试在构造函数中初始化日志模块时,由于加载顺序问题导致无法正常工作。最终通过调整代码顺序解决了问题,并总结了初始化函数的最佳实践。
摘要由CSDN通过智能技术生成

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

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还是不明所以,纯属是我写代码的习惯不规范导致,在初始化中,应按照不变的参数,变的参数,最后调用函数,当然,最好不要在初始化模块中调用函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值