python中类的方法里面变量前加self与不加self的区别

1.最近在执行一个UI自动化脚本登录网站时遇到一个很奇葩的问题:运行脚本后chromedriver会驱动浏览器打开网站执行脚本里面的一系列界面操作,操作完后浏览器自动关闭了(重点就在这里,我明明没有调用webdriver的close()或是quite()方法,为什么它就自动关闭了呢,之前写过一系列的脚本也没出现这个问题,很是纳闷)

2.在网上搜了下相关问题的贴子,很多说是因为谷歌浏览器的版本与chromedriver的版本不匹配,于是我下载了最新版本的谷歌浏览器和与之对应的chromedriver版本,发现还是不行(期间也有降低浏览器的版本),试了很多次发现还是存在这个问题。冷静下来想了下,我觉得可能不是版本之间兼容性的问题,之前定位的原因可能是错误的,于是在百度上面复制了一个脚本在本地运行,发现自动关闭浏览器的现象没有了。

3.仔细核对脚本代码后发现是方法里面wd变量前加了self与没加self的区别造成的

#coding:utf8
from selenium import webdriver
from config.params import *

class pullData():
path2="E:/chromedriver.exe"
def init(self,url):
self.url=url

def openBrowser(self):

            wd = webdriver.Chrome(self.path2)
    wd.get(self.url)
    wd.maximize_window()
            (我的代码里面wd前面没有加self,后来加上self就没有那种现象了),如下:
    self.wd = webdriver.Chrome(self.path2)           #如果wd变量前不加上self时,浏览器执行完操作后会自动关闭(如wd=webdriver.Chrome(self.path2)),
    self.wd.get(self.url)
    self.wd.maximize_window()
    name=‘changle‘
    print name

pullD = pullData(url)
pullD.openBrowser()

原文地址:http://blog.51cto.com/13599360/2089382

时间: 2024-08-05 11:39:12

python中类的方法里面变量前加self与不加self的区别的相关文章

python中的类中属性元素加self.和不加self.的区别

在类中,self只能在函数中使用,表示的是实例属性,就是每个实例可以设置不值,而不相互影响. 如果在类级别使用没有self的属性,是类属性,一般作为全局变量来用的.事实上:就是一个是类属性 一个是对象属性 类和实例都可以访问到属性 当你想让这个变量成为这个类的子变量时 class lc(): def __init__(self): self.a = 5 smalllc = lc() print smalllc. 如果不加self的话 , 那么就不能 smalllc.a 这样访问了

<转>Python 参数知识(变量前加星号的意义)

csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的函数变成一种api提供给可用的应用. 对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数.这些“额外”的参数下一步再解释. 注意args和kwargs只是python的约定.任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用

IOS的变量前加extern和static字段

IOS的变量前加extern和static字段 前一阵子,做项目的时候到网上找Demo,打开运行的时候发现其中变量前有关键字extern和static,所以我研究了一下子 对于extern来说可以理解为扩展吧是这样的是从一个类扩展到另一个类中的 在SplashViewController.m中定义一个变量是这样的 #import "SplashViewController.h" NSString* [email protected]"123"; @implement

Java中主类中定义方法加static和不加static的区别

Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用,后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 2.局部变量与成员变量(也可叫做全局变量) 3.Static关键字的用法 a.成员变量被static修饰后的所有类的共享属性 b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化 4.This关键字的用法 this:是当前类的对象引用.简单的记,它就代表当前

onclick时间加return和不加return的区别

JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置.而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是false时,将中断操作.而直接执行时(不用return).将不会对window.event.returnvalue进行设置所以会默认地继续执行操作详细说明如下:例如:当在 <a href="abc.htm" onclick="return add_onclick()&quo

函数基础重点掌握内容:创建函数、return返回单个值、return返回多个值、函数名加括号与不加括号的区别

##比较两个数大小 #有参函数!!! def compare(s,t): if s > t: print(s) else: print(t) f=compare compare(1000,30) f(1800,30) """有几个参数传几个参数,形参对应实参,一个也不能少""" ''' 2.函数名加括号与不加括号的区别: 函数名加括号与不加括号的区别: --在这个函数中,return返回的是inner, 内部其实是返回inner函数的运行结

new一个对象后面加括号与不加括号的区别

new一个对象后面加括号与不加括号的区别 ? 加括号与不加的区别 (1)加括号 ??? 1. 若括号为空,即无实参项,那么理解为调用默认构造函数: ??? 2. 若括号非空,即有实参项,可以理解为调用重载构造函数,或 复合默认构造函数. (2)不加括号 调用默认构造函数,或复合默认构造函数. 默认构造函数 与 复合默认构造函数的区别 默认构造函数:编译器会为每一个类默认提供一个构造函数,称之为默认构造函数.默认构造函数一般参数为空. 复合默认构造函数:一个由用户自定义的所有形式参数都赋有默认值的

js中加“var”和不加“var”的区别

Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是有区别的.可以正常运行的代码并不代表是合适的代码. 1.都加var,在方法内则是局部变量,在方法外则是全局变量. 2.都不加var,全是全局变量. 3.在方法内,加var为局部变量,不加var则是全局变量(在执行当前方法之后). var num1 = 1: 是在当前域中声明变量. 如果在方法中声明,则为局部变量(local variable):如果是在全局域中声明,则为全局变量(

js中加“var”和不加“var”的区别,看完觉得这么多年js白学了

https://www.cnblogs.com/liuna/p/6140901.html Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是有区别的.可以正常运行的代码并不代表是合适的代码. var num = 1: 是在当前域中声明变量. 如果在方法中声明,则为局部变量(local variable):如果是在全局域中声明,则为全局变量. 而 num = 1: 事实上是对属性赋值操作.首先,它会尝试在当前作用域链(如在方法中声