python自动化测试面试题代码_Python自动化测试常见面试题(四)
一、_ init _ _ 和 _ _ new _ _是什么?
1.1、概述
在python的面向?qū)ο笾?#xff0c;利用new方法創(chuàng)建對象,然后把這個創(chuàng)建的對象傳遞到init函數(shù)中,以第一個參數(shù)進
1.2、詳細描述
__new__
所有的類上都有一個new方法
調(diào)用時機: 新建對象的時候自動調(diào)用(init之前),同時會自動傳入類cls參數(shù)
作用: 改變對象空間的創(chuàng)建過程
class Person(object):
def __new__(cls):
print("__new__方法被調(diào)用")
# 必須返回創(chuàng)建的對象
# print(cls)
#return object.__new__(cls) #父類上的__new__方法能夠?qū)崿F(xiàn)內(nèi)存空間的開辟
return super().__new__(cls) #父類上的__new__方法能夠?qū)崿F(xiàn)內(nèi)存空間的開辟
def __init__(self):
print("__init__方法被調(diào)用")
# 創(chuàng)建對象
zhangsan = Person()
__init___
定義在類中, 名字固定 init。
執(zhí)行時機: 實例化對象的時候自動調(diào)用執(zhí)行
作用: 一般會在初始化方法中 為對象添加(綁定)屬性
class Student(object):
# 屬性
# 方法
## 自己定義一個初始化方法
def __init__(self,_name,_age):
# 輸出
print("我自動被調(diào)用")
# 添加屬性
# self.name = "張三"
# self.age = 26
self.name = _name
self.age = _age
def learn(self):
print("努力學習,天天向上")
# 實例化對象
stu1 = Student(_age=28,_name="李四")
1.3、應(yīng)用場景
所謂單例就是一個類從始至終只能產(chǎn)生一個實例。
class Singleton(object):
__instance = None #私有類屬性,保存創(chuàng)建的對象空間
__isInit = False # 是否已經(jīng)初始化
def __new__(cls, *args, **kwargs):
# 實現(xiàn)自己對象的創(chuàng)建過程
if not cls.__instance:
# 沒有就創(chuàng)建
cls.__instance = super().__new__(cls)
# 返回
return cls.__instance
else:
# 有直接返回
return cls.__instance
def __init__(self,name,age):
if not self.__isInit: #沒有初始化
# 初始化
self.name = name
self.age = age
# 改變
self.__isInit = True
else:
#
pass
二、什么是pass,什么是lambda函數(shù)
2.1、概述
lambda 創(chuàng)建匿名函數(shù)的語法。
pass 空語句。
2.2、詳細描述
?1、pass的作用
不做任何事情,一般用做占位語句,為了保證程序的完整性。
2、lambda
lambda只是一個表達式,函數(shù)體比def簡單很多。
lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
# 可寫函數(shù)說明
sum = lambda arg1, arg2: arg1 + arg2;
# 調(diào)用sum函數(shù)
print "相加后的值為 : ", sum( 10, 20 )
print "相加后的值為 : ", sum( 20, 20 )
2.3、應(yīng)用場景
lambda創(chuàng)建的匿名函數(shù)一般在 排序,map,reduce,filter這些高階函數(shù)里,可以一行寫完,不過這個也要看情況,過多使用匿名函 數(shù),在團隊代碼閱讀上,可能會有麻煩。
>>>def square(x) : # 計算平方數(shù)
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # 計算列表各個元素的平方
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函數(shù)
[1, 4, 9, 16, 25]
# 提供了兩個列表,對相同位置的列表數(shù)據(jù)進行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
# 過濾出列表中的所有奇數(shù):
newlist = filter(lambda x:x % 2 == 1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)
三、is和==有什么區(qū)別?
3.1、概述
is 比較 的是兩個實例對象是不是同一個對象,也就是說這兩個對象的地址,通過id()函數(shù)可以獲取,是不是相同。
== 比較的是兩個實例對象的值是否相等,比較的是內(nèi)存中存放的內(nèi)容,可以不是同一個對象,只要內(nèi)容一樣就可以了。
3.2、詳細描述
x = [1, 2, 3]
y = x
z = [1, 2, 3]
print(x == y)
print(x is y)
print(x == z)
print(x is z)
結(jié)果:
True
True
True
False
3.3、應(yīng)用場景
is常用的地方是: 和None值進行比較 a is None 或者 a is not None
None 在 Python 語言中是一個單例對象,如果你要判斷某個變量是否為 None 時,記得使用 is而不是 ==,因為只有 is才能在嚴格意義上表示某個變量是否是 None。
總結(jié)
以上是生活随笔為你收集整理的python自动化测试面试题代码_Python自动化测试常见面试题(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python主函数入口_Python 入
- 下一篇: split函数python 未定义_Py