what “self” is doing in the selenium python code?
Possible Duplicate:
Python ‘self’ explained
我刚刚在selenium文档的帮助下编写了下面的代码,但是我把它与self做的一些方法argument list混淆了。为什么我需要导入unittest类?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
class PythonOrgSearch(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def test_search_in_python_org(self):
driver = self.driver
driver.get("http://www.python.org")
self.assertIn("Python", driver.title)
elem = driver.find_element_by_name("q")
elem.send_keys("selenium")
elem.send_keys(Keys.RETURN)
self.assertIn("Google", driver.title)
def tearDown(self):
self.driver.close()
if __name__ =="__main__":
unittest.main() |
- 同一件事,作为与其他任何类。如果你试图使用一个第三方的图书馆一样大selenium没有这些基础知识是知道什么的,你是我的自己的路吧。
self用于在成员方法的情况下表示类的调用实例。这是必需的,以便类的成员方法作用于正确的对象。这与硒没有任何关系,但它是该语言的一个一般特征。
它类似于C++中EDCOX1的1个参数。
定义类时,在定义类的数据成员时使用self参数,正如在类中所做的那样。
- 那么,从这个主体中的什么地方生成class对象呢?
- 正文中没有生成类对象。定义类时也使用self。
- @ashrh if __name__ =="__main__": unittest.main()它在代码中做什么?你能解释一下吗?
- 这与self或问题中包含的类定义无关。
- unittest.main()只是调用unittest模块中定义的主函数
- 对于所有基本的OOP技术,我们都知道,如果不创建类的任何对象,就不能调用在该类中编写的方法。但是在我上面的代码中,OOP技术是否维护了这样的规则?如果是,如何从何处?
- 是的,它们是。另外,Python类本身也是对象。因此,对象规则也适用于类定义。
- 所以在python中,没有必要像在Java或C++中使用new关键字那样在main()中创建类的对象,对吗?
- Selenium在这里重用unittest框架,该框架根据运行测试的需要创建TestCase类的实例。创建一个PythonOrgSearch实例在其他地方得到了关注。
- 要创建类对象,需要在Python中执行object = classname()。在Python中的任何地方都不需要显式内存分配(据我所知)。
- @ashrj:是的,python中的内存管理由python运行时负责。
- @martijnpieters python是否提供任何低级别的内存访问方法?
- @现在,马蒂·皮耶特按照我写的代码把它保存为Mytest.py。之后,如果我以python Mytest.py的形式运行它,它会工作吗?或者我还需要在运行时为它创建一个对象?
- @ashrj:你可以检查垃圾收集器的状态。就是这样。
- @用户1897085:按照Selenium文档操作;不过,我希望它可以工作。
- @MartijnPieers如果它有效,那么类如何能够在没有对象创建的情况下工作?
- @马蒂·皮耶特再次感谢你。毅力(在这个职位上)终于得到了回报。学到了新东西:)
- @用户1897085:为什么不阅读Python教程呢?