裡面的詩歌很美
魔法函式
幾個名詞
類和物件的概念
類中的內容,應該具有兩個內容
如何宣告乙個類
例項化類
變數 = 類名() #例項化了乙個物件
訪問物件成員
可以通過缺省內置變數檢查類和物件的所有成員
##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.物件分為類物件和例項物件兩大類 類物件是具有相同屬性和例項物件的抽...