1. 程式人生 > >python面試寶典1

python面試寶典1

多型

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,一般用來關閉資源