Task7 類 物件與模仿方法

2021-10-08 21:44:47 字數 2147 閱讀 4483

類是抽象的模版,物件是類的例項。

python的self相當於c++的this指標`。表示建立的例項本身。

在類中定義的函式只有一點不同,就是第乙個引數永遠是例項變數self,並且,呼叫時,不用傳遞該引數。

class test: 

def prt(self):

print(self)

print(self.__class__)

t = test()

t.prt()

# <__main__.test object at 0x000000bc5a351208>

#

在python中以兩個下劃線開頭的方法,__init____str____doc____new__等,被稱為"魔術方法"(magic methods)。該方法在類例項化的時候會自動呼叫。

python中的魔法方法可以理解為:對類中的內建方法的過載,注意這裡不是重寫。

過載和重寫的區別

方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。過載發生在乙個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的引數列表,有相容的返回型別,比父類被重寫方法更好訪問,不能比父類被重寫方法宣告更多的異常(黎克特制代換原則)。過載對返回型別沒有特殊的要求,不能根據返回型別進行區分。

e.g.

class ball:

def __init__(self, name):

self.name = name

def kick(self):

print("我叫%s,該死的,誰踢我..." % self.name)

a = ball("球a")

b = ball("球b")

c = ball("球c")

a.kick()

# 我叫球a,該死的,誰踢我...

b.kick()

# 我叫球b,該死的,誰踢我...

在 python 中定義私有變數只需要在變數名或函式名前加上「__」兩個下劃線,那麼這個函式或變數就會為私有的了,比如__example,類似c++的private。

python中,派生類的定義如下:

class derivedclassname(baseclassname):   # baseclassname基類名,必須與派生類定義在乙個作用域內。..

.

除了類,還可以用表示式,基類定義在另乙個模組中時這一點非常有用:

class derivedclassname(modname.baseclassname):..

.

子類除了可以繼承父類的方法,還可以覆蓋父類的方法:

class animal():

def sound():

print("sound")

class dog():

def sound():

print("汪")

class cat():

def sound():

print("喵")

dog = dog()

cat = cat()

dog.sound()

cat.sound()

# 輸出

# 汪# 喵

python 嚴格要求方法需要有例項才能被呼叫,這種限制其實就是 python 所謂的繫結概念。

python 物件的資料屬性通常儲存在名為.__ dict__的字典中,我們可以直接訪問__dict__,或利用 python 的內建函式vars()獲取.__ dict__

魔法方法的第乙個引數應為cls(類方法) 或者self(例項方法)。

cls:代表乙個類的名稱

self:代表乙個例項物件的名稱

參考:魔法方法

Task07 類與物件與魔法方法

classc num 0 類屬性 def init self self.x 4 例項屬性 self.y 5 例項屬性 c.count 6 例項屬性def 方法名 classc defmyfun print hello c c c.myfun 建立例項物件的時候不應該包含在類中 類中的每個方法都必須至...

Task10 類與物件

象 屬性 方法 物件是類的例項。換句話說,類主要定義物件的結構,然後我們以類為模板建立物件。類不但包含方法定義,而且還包含所有例項共享的資料。封裝 資訊隱蔽技術 我們可以使用關鍵字 class 定義 python 類,關鍵字後面緊跟類的名稱 分號和類的實現。class turtle python中的...

Task 10類與物件

物件 屬性 方法 物件是類的例項。換句話說,類主要定義物件的結構,然後我們以類為模板建立物件。類不但包含方法定義,而且還包含所有例項共享的資料。封裝 資訊隱蔽技術 我們可以使用關鍵字 class 定義 python 類,關鍵字後面緊跟類的名稱 分號和類的實現。class turtle python中...