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