本章的主題是「更加抽象」,主要介紹如何建立自定義物件。建立自己的物件(類或者型別)是python的核心概念。本章還要介紹多型、封裝、方法、特性、超類以及繼承的概念。
包括多型、封裝、繼承在內的特性。
意味著可以對不同類的物件使用同樣的操作。就算不知道變數所引用的物件型別是什麼,還是能對它進行操作。
關鍵點在於不需要監測型別,只需要知道x有個count的方法,帶有乙個字串作為引數,並且返回整數值就夠了。如果其他人建立了的物件類也有count方法,那也無所謂——你只需要像用字串和列表一樣使用該物件就可以了。
唯一能毀掉多型的就是使用函式顯示的檢查型別,比如type,isinstance以及issubclass函式。
對外部世界隱藏物件的工作細節。是對全域性作用域中其他區域隱藏多餘資訊的原則。幫助處理程式元件而不用過多關心多餘細節。
以普通的類為基礎建立專門的類物件。其他的描述都略過了。
來看一下什麼是類,以及它和型別又有什麼不同
這部分略過了
這部分略過了
可以在屬性名字前面加上雙下劃線即可讓類的屬性變為私有。使用下面的**:
>>> class secretive:
... def __inaccessible(self):
... print "bet you can't see me"
...>>> s = secretive()
>>> s.__inaccessible()
traceback (most recent call last):
file "", line 1, in attributeerror: secretive instance has no attribute '__inaccessible'
所有位於class語句中的**都在特殊的命名空間中執行——類命名空間。這個命名空間可由類內所有成員訪問。並不是所有python程式設計師都知道類的定義其實就是執行**塊。比如在類的定義區並不只限使用def語句。使用下面的**:
>>> class c:
... print 'class c being defined...'
...class c being defined...
類作用域內的變數也可以被所有例項訪問。
python支援多重繼承。如果多個超類中有相同名字的方法,先繼承的類中的方法會重寫後繼承的類中的方法。
python中不需要顯式的執行物件必須包含哪些方法才能作為引數接收。可以在使用物件的時候假定它可以實現你所要求的行為。如果它不能實現的話,程式就會失敗。
>>> callable(getattr(tc,'talk',none))
true
在python3中則可以使用hasattr(x,』call『)來替代callable(x)。
給出一些物件導向設計的要點。
可以用下面的方法考慮需要什麼類以及類需要有什麼方法。
書山有路 SQL必知必會 第7課
本章的主題是 建立計算字段 介紹什麼是計算字段,如何建立計算字段,以及如何從應用程式中使用別名引用它們。計算欄位並不實際存在於資料庫表中。計算欄位是執行時在select語句內建立的。使用下面的sql命令來執行乙個拼接的sql語句 select concat vend name vend countr...
python基礎教程
乙個簡單的客戶機 import socket s socket.socket host socket.gethostname port 1234 s.bind host,port s.listen 5 while true c,addr s.accept print got connection f...
Python基礎教程
本教程不包括python的安裝,ide採用spyder pytho2.7 1.print pow 2,3 8 print 2 3 8這裡pow函式表示乘方,與 功能相同。2.abs 10 10abs函式用來求乙個數的絕對值。3.round 0.6 1.0 round 0.4 0.0round函式將浮...