python問與答常識

Winterto1990發表於2015-10-22
1、 問:python類和例項的區別和聯絡是什麼

答:

(1)類是建立例項的工廠,可以用來建立多個類的例項,即類是例項的模板;

(2) 他們都定義了名字空間,擁有各自的屬性;
(3) 類的屬性(資料屬性和方法屬性)能夠被例項繼承和使用。

2、 問:python類和模組,包區別和聯絡是什麼?

答:

(1)模組在python中對應得是.py檔案,類是定義在模組中的內容;而包可以包含多 個模組的目錄,其中__init__.py檔案用於初始化包;

(2) 他們也都定義了名字空間,並且擁有各自的屬性;
(3) 他們共同構成了oop的結構組織。

3、問:python中pickle模組是用來做什麼的?其主要的函式有哪些?
答:pickle模組用來實現python物件的序列化和反序列化。通常地pickle將python物件序列化為二進位制流或檔案。
其主要的函式有:pickle.dump(),pickle.load(),pickle.dumps(),pickle.loads()等。 

4、 問:以下程式的輸入是什麼?

class Test1(object):

def __init__(self):

print "This is init called!"

def __new__(cls):

print "This is new called!"

return super(Test1,cls).__new__(cls)

class Test2(object):

def __init__(self):

print "This is init called!"

def __new__(cls):

print "This is new called!"

test1=Test1()

test2=Test2()


答:
This is new called!
This is init called!
This is new called!

5、 問:什麼是元類(meta_class)?

答:一句話,元類就是用來建立類的“東西”,或者說元類是用於建立類的類。


6、 問:物件導向的特性是什麼?
答:抽象,封裝,繼承和多型。


7、 問:python oop中self是用來做什麼的?
答:self表示類的例項本身,相當於java語言中的this,是類定義例項方法中第一個顯式引數,而在類的例項方法呼叫時預設第一個隱式引數。


8、問:python類中__init__,__new__方法的區別是什麼?
答:(1)__new__可以看做是類“真正”的建構函式,__init__是類“友好”的建構函式(或 者叫初始化方法)。
(2) __new__方法接受第一個引數是cls,__init__接受第一個引數是self,其他引數 都相同。
(3) __init__是在類例項建立之後呼叫,而 __new__方法正是建立這個類例項的方 法。
(4) __new__方法返回類的例項物件,__init__方法不返回值。


9.問:設計模式的基本原則是什麼?
答:(1)單一職責原則(SRP):就一個類而言,有且僅有一個引起它變化因素。
(2) 開放封閉原則:對擴充套件時開放的,對修改是封閉的。
(3) 依賴倒置原則:高層模組不應該依賴低層模;抽象不應該依賴具體(細節),具 體(細節)應該依賴抽象。
(4) 介面隔離原則:一個類對另外一個類的依賴性應當是建立在最小的介面上。
(5) Liskov替換原則:子型別必須能夠替換掉它們的父型別。


10.

問:通過過載類__new__方法,實現類的單例模式。
答:程式碼如下:
class Singleton(object):

def __new__(cls):

if not hasattr(cls, 'instance'):

cls.instance = super(Singleton, cls).__new__(cls)

return cls.instance

if __name__=="__main__":

instance1=Singleton()

instance2=Singleton()

print "The same:" , ("yes" if instance1 is instance2 else "no")


11.問:請簡述模組設計的基本原則是什麼?
答:高內聚,低耦合。


12.  問:在python中一個函式如果沒有顯示return返回值,那麼它返回的是什麼?
答:返回一個None物件。


13. 問:python的模組搜尋路徑有哪些?

答:

1)程式所在的目錄;

2) PYTHONPATH中包含的目錄;
3) python標準庫目錄;
4) 包含在.pth檔案中的目錄;
以上可通過sys.path查詢得到完整的python模組搜尋目錄;


14. 檔案a.py的內容如下:
common=100
item=["abc","def"]
檔案b.py的內容如下:
from a import common
from a import item
common=200
item[0]="cba"
檔案c.py的內容如下:
import a
import b
print a.common,a.item
請問c.py的輸出是什麼?
答:100,['cba', 'def']


15. 問簡述python中的wmi模組的作用?它有哪些主要的函式?請用該模組簡單實現獲取本地主機的系統資訊。

答:

1)wmi是windows系統管理的核心,它以公共資訊模型為基礎,為指令碼程式和其他MMI提供了一個公共訪問介面,python中的wmi是wmi的python實現。

2) 主要的函式包含:WMI(),Win32_Service(),Win32_OperationSystem(),Win32_Prcoessor(),Win32_DiskDriver()等。
3) 使用wmi獲取本地主機系統基本資訊的實現:
import wmi

#連線本地主機
c=wmi.WMI("localhost")

#獲取主機作業系統型別

for os in c.Win32_OperatingSystem():

print os.Caption,

print os.OSArchitecture,

print os.NumberOfProcesses


#獲取主機CPU資訊

for cpu in c.Win32_Processor():

print cpu.Name,

print cpu.NumberOfCores,

print cpu.NumberOfLogicalProcessors

print cpu.LoadPercentage


#獲取記憶體資訊

for mem in c.Win32_PhysicalMemory():

print mem.Name,

print int(mem.Capacity)/1024/1024/1024,"GB"


#獲取磁碟資訊

for disk in c.Win32_LogicalDisk():

print disk.Caption,

print int(disk.FreeSpace)/1024/1024/1024,"GB"

print int(disk.Size)/1024/1024/1024,"GB"


相關文章