“”"
pass
看以下代码帮助你更快的理解,这是A.py文件的内容:
def number(num):
print(f"{num}")
return “我反射过来了”
这是B.py的内容
import test01
i = getattr(test01, ‘number’)(‘清安’)
print(i)
清安
我反射过来了
这里的test01就是我的A.py,我导入了B.py文件中。前面说了name必须是字符串,所以这里的number其实是A.py文件中的函数方法,这里等价于:test01.number(‘qingan’)。
那么就有小伙伴文了,源文件里面不是有个default=None,如果没有查找到,用该值替代。
o = getattr(test01, ‘numbe’)
print(o)
i = getattr(test01, ‘numbe’,‘不存在’)
print(i)
看这两个例子,一个用了默认值,一个没用默认值,没用默认值的且函数方法错了,那么运行之后就会告诉你这样的一个错误:
AttributeError: module ‘test01’ has no attribute ‘numbe’
那么用了默认值的,则会告诉你"不存在"。这样的一个字样
在学习的过程中,你会看到不一样的教程,getattr反射的是某类的属性,也只能是属性,要是反射其他的就会报错。但其实不然,都可以进行反射,因为函数方法也可以是属性,就比如上述例子中。
那么问题来了,为什么要学这个。我们不是自动化测试吗?
if brower_type == 0 or brower_type == BrowserDriver.Chrome:
driver = webdriver.Chrome()
elif brower_type == 1 or brower_type == BrowserDriver.Firefox:
driver = webdriver.Firefox()
elif brower_type == 2 or brower_type == BrowserDriver.Ie:
driver = webdriver.Ie()
elif brower_type == 3 or brower_type == BrowserDriver.Edge:
driver = webdriver.Edge()
上述代码中,你是否也有这么写过呢,用很多的if-elif-else来判断一个浏览器,或者定位方法。这样写难道自己觉得不多于吗,重复写了很多代码。
那么如何优化呢?答案就是getattr反射。看代码:
–>>>清安<<<—
from selenium import webdriver
def driver_(option_):
che = getattr(webdriver, option_)()
return che
class Browser:
def init(self,option_):
self.driver = driver_(option_)
def open(self,url):
self.driver.get(url)
这是主代码的方法,写的比较简单,但是一个实实在在的例子。我可以根据传入不同的值来打开不同的浏览器,且只有两行代码。再比较上述的写了一行又一行的代码,麻烦且重复。
getattr(webdriver, option_)()等价于webdriver.option_()。这里的option_就是需要传入的驱动。
那么如何传值到主代码,且调用主代码中类的函数方法呢。
from test01 import Browser
driver = Browser(‘Chrome’)
driver.open(‘https://baidu.com’)
这里就很方便了,我在Browser中传入火狐的,IE的那么就会在对应的浏览器中打开对应的百度链接。
好了,对于getattr的运用介绍到这,你可以在元素定位的方法删同样运用起来,因为selenium中八大元素定位,如果你还像if-elif-else一样写,那就太磨人了。
hasattr
=======
以下是源文件介绍:
def hasattr(*args, **kwargs): # real signature unknown
“”"
Return whether the object has an attribute with the given name.
This is done by calling getattr(obj, name) and catching AttributeError.
“”"
pass
返回对象是否具有具有给定名称的属性,这是通过调用 getattr(obj,name) 并捕获AttributeError来完成的。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)