物件導向
語法
類:具有相同方法和屬性的一類事物 例如 桌子 電腦 貓
物件:具有具體的屬性值的實際存在的例子 例如 周杰倫 江疏影
用class來描述一個類
class 類名: 建立一個類 類名通常為以大寫字母開頭的單詞
class Dog:
變數1 = 100
變數2 = 'ab'
變數3 = [a,v,d,s] 變數可以是任何資料型別
print(Dog.變數) 常用檢視類中的變數的方法
print(Dog.__dict__['變數']) 方法二
例項化
物件也是例項,建立一個物件就是建立一個例項,這個過程叫做例項化
例項化的過程
在記憶體中開闢了一塊空間
建立了一個 self 變數來指向這塊空間
呼叫 init 自動傳 self 引數 其他的引數都是按照順序傳進來的
執行init 將 self 自動返回給呼叫者
類名加括號的方式可以建立一個物件
class Dog: def __init__(self,name,hp,ad,sex): print('執行') self.dict['name'] = name 不常用 self.blood = hp self.ad = ad self.sex = sex self 其實上是由python的語法開闢出了一個屬於具體的物件的空間 qu = Dog('qu',20,10,'man') 傳參的過程中 qu = self (物件/例項) print(qu.name) 引用例項變數/引用物件屬性 leng = Dog('leng',10,5,'sb') (物件/例項) print(leng.ad)
執行 init 向 self 這類空間管理的字典中新增一些 key value, self 會自動的被返回
一切皆物件
資料型別也是類
物件就是具體的內容
class Dog:
a = 100 a就是靜態變數 這個類中的變數 是所有物件共享的值 所有靜態變數的值都儘量用類名去操作
def __init__(pass) 初始化方法
(物件資源)
示例函式
class Dog: def __init__(self,name,hp,ad,sex): self.name = name self.hp = hp self.ad = ad self.sex = sex def bite(self,person) person.hp -= self.ad print('%s攻擊了%s,造成了%s點傷害'%(self.name,person.name,self.ad)) class Person: def __init__(self,name,hp,ad,sex): self.name = name self.hp = hp self.ad = ad self.sex = sex def fight(self,dog) dog.hp -= self.ad print('%s攻擊了%s,造成了%s點傷害'%(self.name,dog.name,self.ad)) hei = Dog('小黑',20,10,'?') pdd = Person('PDD',100,20,'man') hei.bite(pdd) print(pdd.hp) pdd.fight(hei) print(hei.hp)
裡面的def fight(self,dog) 屬於動態變數/方法 是隻屬於Person的方法
類名 可以呼叫所有定義在類中的名字
物件名 可以呼叫所有定義在物件中的屬性
變數 函式名
在 init 函式和 self 相關的呼叫函式 且呼叫函式的時候 會把當前的物件當作第一個引數傳遞給 self
向物件的記憶體空間新增
可以通過 init 在類的內部完成 也可以通過物件名在類的外部完成
也可以通過在類的外部通過物件名來修改屬性的值
刪除
del pdd.name 刪除 pdd.name 這條屬性