python 6 類 私有變數 多型

2021-08-09 11:41:17 字數 2069 閱讀 7221

標籤(空格分隔): python

python中類的定義,括號內是繼承的類,所有的類都預設繼承自object類

class

student

(object):

def__init__

(self, name, score):

self.__name = name

self.__score = score

意思是直接在類裡面定義函式,去呼叫、顯示其它函式的結果。而不是在類外訪問。

外部訪問,在類外定義函式訪問類裡面的資料

>>> def print_score(std):

... print '%s: %s' % (std.name, std.score)

...>>> print_score(bart)

bart simpson: 59

封裝後的訪問,直接在類內定義訪問的函式

>>> bart.print_score()

bart simpson: 59

變數前邊有兩個下劃線,是私有變數。只有類內部可以訪問,外部不能訪問,一般這樣的私有變數,都有配套的get,set函式。如果非要在類外訪問,可以用get函式訪問,用set函式修改

比如,在類外通過物件呼叫,會失敗

>>> bart.__name

traceback (most recent call last):

file

"", line 1, in

attributeerror

:'student' object has no attribute '__name'

class

student

(object):

...def

set_score

(self, score):

self.__score = score

乙個下劃線,意思是我雖然可以訪問,但不要隨便訪問。

前面兩個下劃線,後面兩個下劃線,是特殊變數,特殊變數在可以訪問,

繼承 當子類和父類都存在相同的run()方法時,我們說,子類的run()覆蓋了父類的run(),在**執行的時候,總是會呼叫子類的run()。這樣,我們就獲得了繼承的另乙個好處:多型。

父類

class

animal

(object):

defrun

(self):

print

'animal is running...'

子類

class

dog(animal):

defrun

(self):

print

'dog is running...'

defeat

(self):

print

'eating meat...'

繼承

class

dog(animal):

pass

class

cat(animal):

pass

再次執行

dog = dog()

dog.run()

cat = cat()

cat.run()

結果

running...

cat is

running...

繼承了就有多型了。

繼承了就具有父類的方法,然後子類就能夠覆寫父類方法。

這樣的好處就是,乙個方法名在不同的子類裡具有不同的作用,這就是多型。

定義乙個函式,它的傳入引數型別為animal類物件,也可以為annimal的派生類物件,dog,cat,它會自動呼叫子類的run函式

def

run_twice

(animal):

animal.run()

animal.run()

玩轉python(6)協程

多工系統一般都需要解決乙個問題 多個任務如何排程。搶占式排程就是一種很常見的任務排程機制。以單核模式下的程序排程為例,乙個程序處於執行狀態,其他的處於就緒佇列,等到當前執行的程序放棄cpu的使用權,系統將cpu立刻分配給新到達的程序,由於任務的執行順序是不確定的,看上去就像一堆任務在競爭cpu的使用...

演算法學習 python 6

氣泡排序 coding utf 8 def bubblesort list1 for j in range 0,len list1 1 增加乙個計數器 count 0 for i in range len list1 1 j,j,1 if list1 i list1 i 1 list1 i list...

玩轉python(6)協程

多工系統一般都需要解決乙個問題 多個任務如何排程。搶占式排程就是一種很常見的任務排程機制。以單核模式下的程序排程為例,乙個程序處於執行狀態,其他的處於就緒佇列,等到當前執行的程序放棄cpu的使用權,系統將cpu立刻分配給新到達的程序,由於任務的執行順序是不確定的,看上去就像一堆任務在競爭cpu的使用...