python基礎11 OOP 面向 物件

2021-09-13 17:17:47 字數 2004 閱讀 7051

裡面的詩歌很美

魔法函式

幾個名詞

類和物件的概念

類中的內容,應該具有兩個內容

如何宣告乙個類

例項化類

變數 = 類名() #例項化了乙個物件

訪問物件成員

可以通過缺省內置變數檢查類和物件的所有成員

##6.1 封裝

判別物件的位置

私有 受保護的封裝 protected

語法:

class person():

name = "noname"

age = 0

def sleep(self):

print("sleeping......")

父類寫在括號內

class teach(person):

pass

t = teacher():

print(t.name)

print(teacher.name)

繼承變數函式的查詢順序問題

建構函式

super

單繼承和多繼承

單繼承和多繼承的優缺點

多繼承:

菱形繼承/鑽石繼承問題

建構函式

我們使用多繼承語法來實現mixin

使用mixin實現多繼承的時候非常小心

優點:

三種方法

無論哪種修飾符都是為了對成員屬性進行相應的控制

__dict__:以字典的方式顯示類的成員組成

__doc__: 獲取類的文件資訊

__name__:獲取類的名稱,如果在模組中使用,獲取模組的名稱

__bases__: 獲取某個類的所有父類,以元組的方式顯示

描述符相關

屬性操作相關

作用:進行屬性設定的時候進行驗證或者修改

注意: 在該方法中不能對屬性直接進行賦值操作,否則死迴圈

參看案例

# __setattr__案例

class person():

definit(self):

pass

def __setattr__(self, name, value):

print("設定屬性: ".format(name))

# 下面語句會導致問題,死迴圈

#self.name = value

# 此種情況,為了避免死迴圈,規定統一呼叫父類魔法函式

super().__setattr__(name, value)

p = person()

print(p.__dict__)

p.age = 18

運算分類相關魔術方法

靜態方法

類方法參看案例

三種方法的案例

class person:

# 例項方法

def eat(self):

print(self)

print("eating.....")

#類方法

# 類方法的第乙個引數,一般命名為cls,區別於self

@classmethod

def play(cls):

print(cls)

print("playing.....")

# 靜態方法

# 不需要用第乙個引數表示自身或者類

@staticmethod

def say():

print("saying....")

yueyue = person()

# 例項方法

yueyue.eat()

# 類方法

person.play()

yueyue.play()

#靜態方法

person.say()

yueyue.say()

Python基礎 物件導向OOP

魔法函式 物件導向概述 幾個名詞 類和物件的概念 類的內容,應該具有兩個內容 類的基本實現 如何宣告乙個類 可以通過缺省內置變數檢查類和物件的所有成員 類的所有成員檢查 定義乙個學生類,用來形容學生 class student 乙個空類,pass代表跳過 pass必須有 pass 定義乙個物件 zs...

物件導向(OOP)基礎

1 物件導向特性 封裝 繼承 多型。2 oop概念 類 class 物件 object 字段 field 描述類的某些性質。屬性 attribute 通過方法訪問和操作字段。方法 method 定義類的行為。3 類的建立 修飾符 class 類名 class computer 4 物件的宣告 例項化...

python物件導向程式設計 OOP

物件導向程式設計,是一種程式設計方式,這種程式設計方式需要使用 物件 來實現。萬物都是物件。物件的特徵 1.世間萬物皆物件 2.每個物件都是唯一的 3.物件具有屬性和行為 物件的行為包括具有的功能以及具體的實現 4.物件具有狀態 5.物件分為類物件和例項物件兩大類 類物件是具有相同屬性和例項物件的抽...