七、Python入門-面向物件
阿新 • • 發佈:2020-04-13
面向物件
認識面向物件
概念:面向物件(Object Oriented)是軟體開發方法。
特徵:封裝 繼承 多型
類的建立
類包括屬性和方法。
屬性包括例項變數和類變數
類的例項化
例項化是指在面向物件的程式設計中,把用類建立物件的過程稱為例項化。是將一個抽象的概念類,具體到該類實物的過程
self關鍵字和初始化方法
self:隱式將物件作為引數傳遞self,所以在例項化物件時不需要傳遞,表示當前物件
#7.2.類的建立 class Dog(object): typee="寵物" #類變數 #初始化方法 def __init__(self, name,age,color): #self表示當前物件 self.name = name #例項變數(屬性) self.age = age self.color = color #普通方法 def eat(self): print(self.name,"啃骨頭!") def run(self,speed): print("{0}{1}跑路".format(self.name,speed)) #格式化輸出 print(self.name+speed+"跑路") #↑相當於print(dog.name+speed+"跑路") #7.3.例項化物件 && 7.4.self關鍵字和初始化方法 dog=Dog("小黑",3,"白色") #隱式將dog傳遞給self #訪問屬性 print(dog.name) print(dog.age) print(dog.color) #設定屬性 dog.color="黑色" print(dog.color) #呼叫方法 dog.eat() dog.run("飛快的")
類的封裝
私有:__bal 只允許內部訪問,提高安全性,並沒有完全私有化
class Card(object): def __init__(self, num,pwd,bal): self.num = num #卡號 self.pwd = pwd #密碼 self.__bal = bal #餘額 def save(self): print("存款!") def getBal(self,numm,pwdd): if(numm==self.num and pwdd==self.pwd): return self.__bal else: return "輸入錯誤" card=Card("1001","123456",1000) #開卡 #訪問私有屬性 print(card.getBal("1001","123123")) print(card.getBal(card.num,card.pwd)) print(card._Card__bal) #python提供直接訪問的方法
類的繼承和多型
繼承:子類(派生類)繼承父類(基類)的屬性和方法
多型:相同方法名,不同的方法實現(重寫)
#繼承 class Animal(object): #Animal繼承object def __init__(self, color): self.color = color def eat(self): print("吃!") def run(self): print("跑!") #不呼叫父類的init class Dog(Animal): #Dog繼承Animal def __init__(self, name,hobby): #同名,重寫 self.name=name self.hobby=hobby def eat(self): #同名,重寫 print("啃骨頭") dog=Dog("小黑","讀書") #呼叫的是自己的__init__ dog.eat() #呼叫的是自己的eat dog.run() #呼叫父類的run #呼叫父類的init class Dog2(Animal): #Dog2繼承Animal def __init__(self, name,hobby,color): super(Dog2, self).__init__(color) #呼叫父類的初始化函式 self.name=name self.hobby=hobby def eat(self): print("我也啃骨頭") dog2=Dog2("小黑","讀書","黑色") print(dog2.color) #多型 def Eat(obj): obj.eat() animal=Animal("黃色") Eat(animal) Eat(dog) Eat(dog2)