Python调用问题__init__(self,driver)

在工作中遇见这样一个问题,防止以后忘记,记录该问题

一、有2个py文件basepage.py和baidu_search.py

basepage.py

Python调用问题__init__(self,driver)

在baidu_search.py中调用上面的py文件

Python调用问题__init__(self,driver)

二、有另外2个py文件,browser_engine.py和testabby.py

browser_engine.py文件

Python调用问题__init__(self,driver)

 在testabby.py中调用上面哪个py文件

Python调用问题__init__(self,driver)

 分析一和二中的代码,比较迷惑的是,同样的构造函数

Python调用问题__init__(self,driver)

但是在调用的时候却不一样,一的调用是Python调用问题__init__(self,driver)

 二的调用是Python调用问题__init__(self,driver)

 一个后面带的参数是driver,一个是self,为什么这样?

根据Log日志去判断,在一中Python调用问题__init__(self,driver)

 打印的日志为:<test.basepage.BasePage object at 0x0000000005600D68>

在二中Python调用问题__init__(self,driver)

打印的日志为:<test.browser_engine.BrowserEngine object at 0x0000000004C8B9E8>

发现打印的日志一样。根据对比代码,发现在一中,Python调用问题__init__(self,driver)

 的调用是在def方法外部,且其中的driver是外部传入的driverPython调用问题__init__(self,driver)

 而不是这里面的driverPython调用问题__init__(self,driver)

 在二中Python调用问题__init__(self,driver)

 的调用是在def方法内部,且其中的self是当前

TestBrowserEngine本身。

 

总结,在调用class类时,如果有Python调用问题__init__(self,driver)

构造函数,它和class调用本身没有关系,而和class的调用的地方有关系,如果在def内部去调用,则使用self的方式,如果在def外部去调用,括号中的值则可以是外部传入的值。因为有Python调用问题__init__(self,driver)

所以调用的时候,必须带一个参数