初識物件導向

想吃橙子發表於2019-03-25

物件導向

語法

類:具有相同方法和屬性的一類事物         例如 桌子 電腦 貓

物件:具有具體的屬性值的實際存在的例子      例如 周杰倫 江疏影

用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  這條屬性

相關文章