Python實訓(3) 物件導向

2021-10-07 17:27:02 字數 2029 閱讀 3983

來學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:

print

("分數應該在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...