python面試寶典1
阿新 • • 發佈:2019-02-06
多型
1. python有多型,但是不是一個嚴謹的多型,因為Python是一個動態語言,沒有強制型別
封裝
一個函式一個功能,一個類是多個相關函式的集合
繼承
子類中相同的方法會放到父類中,減少程式碼重複性
mro 及多繼承
mro類初始化順序表,保持我們的類只初始化一次
super()從mro順序表中找到自已的位置,從mro順序表中呼叫下一個類
例項與類之間的呼叫關係
例項可以呼叫三種類型的方法(靜態,類,例項),可以呼叫類的屬性及自我的屬性
類可以呼叫三種類型的方法(靜態,類,例項),但是不能呼叫例項上的屬性
property
1. 完成常量,常量是能得到到資料,但是不能修改資料,一般常量都是大寫 2. 程式碼實現 這個常量一般在init中建立一個私有的屬性 提供一個得到這個私有屬性的方法,但是我們為了讓常量更直觀,在方法上加入裝飾器@property 呼叫就可以使用(類名.方法名)
class MyMath(object):
def __init__(self):
self.__PI = "3.1415926"
@property
def PI(self):
return self.__PI
math = MyMath()
print(math.PI) # 常量這個不能讓別人修改的值
魔法屬性與方法
__dict__:檢視屬性
__class__:檢視誰建立了我
__call__:例項()呼叫
__init__:初始化
__new__:建立時,一般單例
上下文管理程式碼
class MyOpen(object):
def __init__(self, file, mode): # MyOpen()時呼叫
# print(file, mode)
f = open(file, mode)
self.f = f
def __enter__(self): # 返回as 後面的值
return self.f
def __exit__(self, *args): # 退出關閉
# print("close")
self.f.close()
with MyOpen("./test.txt" , "r") as f:
content = f.read()
print(content)
with改造資料庫
class MyOpen(object):
def __init__(self, file, mode): # MyOpen()時呼叫
# print(file, mode)
f = open(file, mode)
self.f = f
def __enter__(self): # 返回as 後面的值
return self.f
def __exit__(self, *args): # 退出關閉
# print("close")
self.f.close()
with MyOpen("./test.txt", "r") as f:
content = f.read()
print(content)
##上下文管理器
只要實現了init ,enter,exit這三個方法就可以說實現了上下文管理器
1.簡化了程式碼
2.程式退出時自動關閉
3.操作時出現異常也會自動關閉
with myopen() as f:
pass
myopen()這個呼叫init方法
as 後面的f由enter這個方法返回
程式執行完後退出我們會執行exit,一般用來關閉資源