來學python物件導向的特性(一天講了太多東西,真就填鴨。。)
class
student
(object
):
這裡括號內就表示繼承基類,所有類都繼承為object這個「超級類」
class
student
(object):
def__init__
(self, name)
: self.name = name
用以上**定義類函式,函式名前後有兩個下劃線的表示特殊函式如這裡是__init__是建構函式,第乙個引數是self表示指向自己這個物件。
所有的物件導向特殊函式指路:
python中沒有靜態成員變數的說法,但是也可以給類本身繫結變數
直接在外部指定就可以
student.num=
100;
屬於類的變數可以由所有的例項物件訪問輸出
所以說千萬不能讓類的變數與例項物件的變數名稱一樣!
python中沒有public、protect等識別符號,
但是可以在例項的變數名前加雙下劃線__使之成為私有成員變數,
外部無法直接訪問,
這樣之後再編寫訪問私有成員的介面函式,可以實現封裝。
但這樣的封裝是比較弱的,
因為加雙下劃線不能真正使之成為私有,
本質只是偷偷改了一下名字:
只是這樣的改名方法在不同版本不一樣,所以不建議用這種方式訪問成員變數。
在python中,有另一種的實現封裝的方法,使得介面變得方便同時,為成員變數限制值。
將score(
)成員函式視為乙個屬性(成員變數),它返回_score的值
@score.setter
defscore
(self,value)
:if value<
0or value>
100:
("分數應該在0到100之間"
)return
self._score=value
說明當在外部呼叫s.score=***時,執行s.score(***) 在外部貌似就不能用s.score(***)了
以上有三個score,他們必須保持命名一致。這也好理解,
乙個是為了讀取_score,
乙個是為了設定_score,
但是對外都是用s.score統一的,
當然要用同樣的命名實現這種統一
python的繼承與多型和c++相近,繼承方法前文已有。多繼承這種特性不用也罷。
c++要用這裡也都適用
python可以用isinstance()來判斷乙個物件是否屬於某乙個類
(子類當然是父類,但是父類不是子類)
C 物件導向程式設計實訓4
求最大值 include 編譯預處理命令 include 編譯預處理命令 using namespace std 使用命名空間std template class elemtype elemtype max elemtype x,elemtype y char max char s1,char s2...
實訓日記(3)
1.一維陣列,二維陣列如何定義,初始化?如何在程式中賦值?如 int a int b 2 3 2.字元陣列如何定義,初始化,如何程式中賦值?如 char a 5 3.字串常見函式的使用,不用函式如何實現字串的複製,字串長度的實現?如果不用函式,可把字串裡的字元乙個乙個分別賦值給另乙個陣列來實現複製。...
python實訓成果 python實訓第一天
實訓第一天總結 常量 常量也是變數,在python中大家都規定只要是大寫的變數都稱之為常量 使用者與程式互動 數字型別 整型int 浮點型 float 字串型別 列表型別 字典型別 在 內,都逗號隔開,可存放多個值,每個值以key value的形式儲存 存 dict1 取 print dict1 n...