python學習1 類與物件

2021-10-05 06:12:11 字數 3143 閱讀 5651

鴨子型別

百科定義:當我看到乙隻鳥像鴨子一樣走,像鴨子一樣遊,像鴨子一樣呱呱叫,我就叫它鴨子

它不關注物件的型別,而是關注物件具有的行為。

在python中,有乙個 extend 方法,它接收可迭代物件,它不關注物件的型別,只關注物件具有的方法行為。

a =[22

,33]list1 =[2

,3,4

,5]tuple1 =(8

,9,0

)set1 =

a.extend(set1)

print

(a)

多型

根據 a 指向的物件不同,它呈現出不同的行為,這就是多型。

class

dog(

object):

defeat

(self)

:print

("吃**"

)class

cat(

object):

defeat

(self)

:print

("吃貓糧"

)class

goldfish

(object):

defeat

(self)

:print

("吃魚糧"

)animal_list =

[dog, cat, goldfish]

for a in animal_list:

a().eat(

)

定義各種方法而不做具體實現,不能被例項化,通常提供給子類繼承,子類必須重寫方法。

應用場景

from collections.abc import sized,iterable

print

(isinstance

(d,iterable)

)# 判斷有沒有iter方法

import abc

class

father

(metaclass=abc.abcmeta)

: @abc.abstractmethod #強制子類重寫,不重寫報錯

defget

(self, key)

:pass

@abc.abstractmethod

defset(self, key, value)

:pass

class

son(father)

:def

get(self, key)

:pass

defset

(self, key, value)

:pass

s = son()s.

set(

'abcd'

,'uuu'

)# 如果子類不實現 set方法,就會報錯

# typeerror: can't instantiate abstract class son with abstract methods set

isinstance 判斷某個物件的型別,若不存在 返回false。isinstance 會考慮類的繼承關係

type is會判斷記憶體位址 ,而不會判斷繼承關係

classa(

object):

pass

class

b(a)

:pass

b = b(

)print

(isinstance

(b, a)

)# true

a = b =[1

,2]c =[1

,2]print

(type

(a)==

type

(c))

# true

print

(a is c)

# false

類屬性不能向下查詢,例項屬性可以向上查詢。

classa:

#類屬性

aa =

1def

__init__

(self,x,y)

:#例項屬性

self.x = x

self.y = y

a = a(1,

2)print

(a.x)

# 報錯

print

(a(1,2

).x)

# 可以得到 1

a.aa =

11a.aa =

22print

(a.aa)

# 22 相當於新增例項屬性 self.aa=22

print

(a.aa)

# 11

b = a(2,

3)print

(b.aa)

# 11

mro 演算法

類.__mro__

程式執行過程中用於判斷某個物件的型別

呼叫父類方法,呼叫super為了避免重複

class

father

(object):

def__init__

(self, name, age)

: self.name = name

self.age = age

defspeak

(self)

:print

("%s 說: 我已經 %s歲了"

%(self.name, self.age)

)class

son(father)

:def

__init__

(self, name, age, grade)

:super()

.__init__(name, age)

self.grade = grade

s = son(

'son',8

,4)s.speak(

)

Python學習筆記 類與物件

基於python3版本的學習。生活中我們所說的類,是物以類聚的類,是分門別類的類,是多個類似事物組成的群體的統稱。而在python中我們所遇到的類 class 比如整數 字串 浮點數等,不同的資料型別就屬於不同的類。準確來說,它們的全名是整數類 字串類 浮點數類。每乙個類之下都包含無數相似的不同個例...

Python學習筆記 (類與物件)

1.類與物件 物件導向程式設計語言類 乙個模板,人類 是乙個抽象的,沒有實體的物件 eg 張三,李四 屬性 表示這類東西的特徵,眼睛,嘴巴,鼻子 方法 表示這類物體可以做的事情,eg 吃飯,睡覺,學習 2.定義類 使用class 3.python 的魔法方法 init self param1,par...

Python學習 初識類與物件

python中類和物件的概念 python中的函式和普通函式的對比 python類語法的初識 一 python中類和物件的概念 我們把一類相同的事物叫做類,其中用相同的屬性 其實就是變數 描述,裡面封裝了相同的方法。比如,汽車是乙個類,它包括 品牌等屬性。倘若要實現列印100種車的屬性的功能,那麼可...