python自动化测试面试题
常见的python自动化测试的面试题目
1. 对函数传参为可变型数据类型 进行改进
1 | def add(ele,mylist=[]): |
运行结果如下图:

解决方法一:(最简单的方法,但是代码有点冗余)
1
2
3
4
5
6
7def add(ele,mylist=[]):
mylist.append(ele)
return mylist
print(add(4,[]))
print(add(5,[]))
print(add(6,[]))解决方法二:(推荐使用)
1
2
3
4
5
6
7
8
9def add(ele,mylist=[]):
if not mylist:
mylist=[]
mylist.append(ele)
return mylist
print(add(4))
print(add(5))
print(add(6))解决方法三:(将默认参数修改为 不可变的类型)
1
2
3
4
5
6
7def add(ele,mylist=None):
mylist.append(ele)
return mylist
print(add(4))
print(add(5))
print(add(6))
2. 简述方法中__init__() 与__new__()的区别?
方法__new__()的特性
1.1 __new__()用于创建实例,在实例创建之前调用,类级别的方法,是个静态方法
1.2 __new__()至少有个参数cls,代表当前类,在实例化时由python解释器自动识别
1.3 __new__()必须要返回值,返回实例对象方法__init__()的特性
2.1 __init__()用于初始化实例,在实例对象创建后被调用,对象级别的方法,用于设置对象的一些初始值
2.2 __init__()至少有一个参数self,它是new()返回的实例,init()是在new()的基础上完成数据的初始化操作
2.3 __init__()不需要返回值__new__()的作用
3.1 __new__() 用来继承一些不可变的class(比如:int,str,tuple)提供一个自定义类的实例化过程的途径1
2
3class 子类名(int):
def __new__(cls,value):
return super(子类类名,cls).__new__(cls,abs(value))3.2 __new__()实现单例模式(每次初始化时只返回一个对象)
1
2
3
4def __new__(cls):
if not hasattr(cls,'instance'):
cls.instance = super(子类类名,cls).__new__(cls)
return cls.instance
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 筱茗辰!