這篇文章將為大家詳細(xì)講解有關(guān)Python3.5面向?qū)ο笈c繼承的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)專注于云龍企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開發(fā)。云龍網(wǎng)站建設(shè)公司,為云龍等地區(qū)提供建站服務(wù)。全流程按需制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)具體如下:
1、編程的方式
2、面向?qū)ο蟮幕靖拍?/strong>
3、類的基本概念
4、類的定義與調(diào)用——簡單代碼舉例
注:建議類名的開頭字母用大寫,在Python中,類內(nèi)的函數(shù)稱作方法,類外的函數(shù)還是稱作函數(shù)。
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu #類 class Person: i = 10 #屬性(變量) def eat(self): #方法(函數(shù)) print("eating...") pass #類的調(diào)用 a = Person() a.eat()
運(yùn)行結(jié)果:
eating...
class Person(): #對象屬性 構(gòu)造方法 在實(shí)例化對象時(shí)會(huì)自動(dòng)調(diào)用 # 實(shí)例化的對象就具有name和age兩個(gè)屬性 #self是指當(dāng)前的對象 self不是關(guān)鍵字可以被代替,但是習(xí)慣使用self指代當(dāng)前對象 def __init__(self,name,age): # 通過構(gòu)造方法聲明了兩個(gè)對象屬性 #對象.name屬性 = name參數(shù) self.name = name self.age = age #聲明一個(gè)類方法 def speak(self): print("Hello,my name is %s,and I'm %d years old" %(self.name,self.age)) #創(chuàng)建實(shí)例對象 會(huì)觸發(fā)構(gòu)造方法 people01 = Person("Jack",18) #通過Person類實(shí)例化出一個(gè)people對象 print(people01) #打印Person對象在內(nèi)存中的地址 print(people01.name,people01.age) #打印對象的屬性 #給對象添加屬性 people01.sex = "F" print(people01.sex) #類方法的調(diào)用 people01.speak()
運(yùn)行結(jié)果:
<__main__.Person object at 0x0059C5B0>
Jack 18
F
Hello,my name is Jack,and I'm 18 years old
5、類的方法
示例代碼:
#方法——靜態(tài)方法 class S(): #實(shí)例(對象)屬性 def __init__(self,name,age): #self一般指實(shí)例對象 self.name = name self.age = age @staticmethod #用staticmethod裝飾器修飾 表示test2為靜態(tài)方法 def test2(): #不能傳入self 對象的引用 print("test2...") s1 = S("Joe",18) s1.test2() #通過實(shí)例調(diào)用靜態(tài)方法 S.test2() #通過類名調(diào)用靜態(tài)方法 #方法——類方法 class C(): #類屬性 country = "China" #實(shí)例(對象)屬性 def __init__(self,name,age): self.name = name self.age = age @classmethod #用classmethod裝飾器修飾 表示test3為類方法 def test3(cls): #cls指的是類 print("test3...",cls.country) #類方法調(diào)用類屬性 c1 = C("Jack",18) c1.test3() #通過實(shí)例調(diào)用類方法 C.test3() #通過類名調(diào)用類方法
運(yùn)行結(jié)果:
test1...
test2...
test2...
test3... China
test3... China
(1)構(gòu)造方法:構(gòu)造方法不能重載(被覆蓋)
在Python中內(nèi)置,每一個(gè)類都有一個(gè)默認(rèn)的不帶參數(shù)的構(gòu)造方法,不需要人為的單獨(dú)調(diào)用,在調(diào)用類的同時(shí)就運(yùn)行了構(gòu)造方法。
構(gòu)造方法的作用:初始化數(shù)據(jù)、創(chuàng)建對象(構(gòu)造方法的調(diào)用)
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu class Person: def __init__(self): print("構(gòu)造方法") pass Person() #類的調(diào)用--創(chuàng)建對象
運(yùn)行結(jié)果
構(gòu)造方法
帶參數(shù)的構(gòu)造方法:
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu class Person: # def __init__(self): # print("構(gòu)造方法") def __init__(self,x): print("帶參數(shù)的構(gòu)造方法:",x) def add(self,x,y): print(x+y) pass zs = Person("hello") #類的調(diào)用--創(chuàng)建對象 zs.add(1,2)
運(yùn)行結(jié)果:
帶參數(shù)的構(gòu)造方法: hello
3
(2)面向?qū)ο蟮乃悸?/strong>
(3)類方法
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu #類方法 class Person: def eat(self): #類方法 print("eating...") pass a = Person() #類方法調(diào)用 a.eat()
運(yùn)行結(jié)果:
eating...
(4)私有方法
只允許在類的內(nèi)部使用,專門為類服務(wù)的。
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu class Person: def eat(self): # 類方法 print("eating...") self.__sleep() # 調(diào)用私有方法 def __sleep(self): #私有方法--類的外部不能使用 print("sleeping...") pass b = Person() b.eat()
運(yùn)行結(jié)果:
eating...
sleeping...
6、屬性
示例屬性、類屬性代碼:
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu #屬性 class a(): def __init__(self,name,age): self.name = name #實(shí)例屬性 self.age = age #類內(nèi)部使用實(shí)例屬性 self.實(shí)例屬性名 def get(self): print(self.name) a1 = a("Jack",18) #類內(nèi)部使用實(shí)例屬性 self.實(shí)例屬性名 a1.get() #類外部使用實(shí)例屬性 對象名.實(shí)例屬性名 print(a1.name) #類屬性 在__init__()方法外聲明 #類內(nèi)部使用 類名.屬性名 調(diào)用 #類外部使用通過 類名.屬性名 或者 對象名.屬性名 方式調(diào)用 class b(): name = "Janne" #類屬性 #類內(nèi)部使用類屬性——類名.屬性名 def get(self): print(b.name) #類外部使用類屬性 通過 類名.屬性名 print(b.name) #類外部使用類屬性 通過 對象名.屬性名 b1 = b() print(b1.name) #類內(nèi)部使用類屬性——類名.屬性名 b1.get()
運(yùn)行結(jié)果:
Jack
Jack
Janne
Janne
Janne
(1)類屬性/類變量:在類的外部可以調(diào)用
(2)私有變量/私有屬性:只能在類的內(nèi)部,通過self使用
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu #屬性/變量 class Person: i = 10 #類屬性/類變量 __j = 20 #私有屬性/私有變量 def eat(self): # 類方法 print("eating...") print(self.__j) # 調(diào)用私有變量 pass b = Person() print(b.i) #通過引用調(diào)用(建議) print(Person.i) #可通過類名調(diào)用 b.eat()
運(yùn)行結(jié)果:
10
10
eating...
20
class GirlFriend(): #聲明對象屬性 通過構(gòu)造方法 def __init__(self,name,age,phone,pwd): #給對象的屬性(變量名)前面加上 __ 成為了私有的屬性 self.__name = name self.__age = age self.__phone = phone self.__pwd = pwd #通過預(yù)留的接口 對私有屬性名進(jìn)行訪問或修改 def getInfo(self,pwd): if pwd == "1234": print("My girlfriend is %s,and she's %d years old,Her telephone number is %d"%(self.__name,self.__age,self.__phone)) else: print("you failed...") def setName(self,name): self.__name = name #類內(nèi)修改私有屬性 gf = GirlFriend("Janne",18,13511112222,"1234") gf.setName("Malianna") gf.getInfo("1234")
運(yùn)行結(jié)果:
My girlfriend is Malianna,and she's 18 years old,Her telephone number is 13511112222
(3)特殊的類屬性
7、繼承
Python中支持多繼承,作用:復(fù)用,不建議使用多繼承(類對象爆炸)、
繼承示例代碼:
#繼承 #父類 class Animal(): def __init__(self,name,food,drinks): self.name = name self.food = food self.drinks = drinks def eat(self): print("%s 愛吃 %s" %(self.name,self.food)) def drink(self): print("%s 愛喝 %s" %(self.name,self.drinks)) #子類 class Dog(Animal): def sound(self): print("wonf wonf...") class Cat(Animal): def sound(self): print("miao miao...") dogs = Dog("哮天犬","骨頭","雪碧") dogs.eat() dogs.drink() dogs.sound() print("========================") cats = Cat("波斯貓","魚","可樂") cats.eat() cats.drink() cats.sound()
運(yùn)行結(jié)果:
哮天犬 愛吃 骨頭
哮天犬 愛喝 雪碧
wonf wonf...
========================
波斯貓 愛吃 魚
波斯貓 愛喝 可樂
miao miao...
示例一:
多繼承
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu #多繼承 class Run3000: def run(self): print("run 3000") class Jump3: def jump(self): print("jump 3") class Sport(Run3000,Jump3): #繼承 pass sport = Sport() sport.run() sport.jump()
運(yùn)行結(jié)果:
run 3000
jump 3
示例二:
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu class Father: def __init__(self): print("father 構(gòu)造") def teach(self): print("father teaching") class Child(Father): pass zs = Child() #子類繼承與父類,創(chuàng)建子類前先創(chuàng)建父類 zs.teach()
運(yùn)行結(jié)果:
father 構(gòu)造
father teaching
子類中重寫父類的方法:重寫體現(xiàn)多態(tài)
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu class Father: def __init__(self): print("father 構(gòu)造") def teach(self): print("father teaching") class Child(Father): def teach(self): #方法重寫 print("child teaching") zs = Child() #子類繼承與父類,創(chuàng)建子類前先創(chuàng)建父類 zs.teach()
運(yùn)行結(jié)果:
father 構(gòu)造
child teaching
新式類:
如果父類的構(gòu)造方法帶參數(shù),則需要子類通過super操作去完成調(diào)用。
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu #新式類 class Father(object): def __init__(self,i): print("father 構(gòu)造"+ i) def teach(self): print("father teaching") class Child(Father): def __init__(self): super(Child,self).__init__("hello") def teach(self): #方法重寫 print("child teaching") zs = Child() #子類繼承與父類,創(chuàng)建子類前先創(chuàng)建父類 zs.teach() #運(yùn)行結(jié)果: father 構(gòu)造hello child teaching
運(yùn)行結(jié)果:
father 構(gòu)造hello
child teaching
多繼承又不完全,父類都有構(gòu)造方法時(shí),當(dāng)子類多繼承時(shí),只有一個(gè)父類的構(gòu)造方法被調(diào)用。
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu class Run3000: def __init__(self): print("run 3000 構(gòu)造方法") def run(self): print("run 3000") class Jump3: def __init__(self): print("jump 3 構(gòu)造方法") def jump(self): print("jump 3") class Sport(Run3000,Jump3): #繼承 pass sport = Sport() sport.run() sport.jump()
運(yùn)行結(jié)果:
run 3000 構(gòu)造方法
run 3000
jump 3
8、面向?qū)ο缶幊?/strong>
(1)定義
(2)示例代碼——人開車
關(guān)于“Python3.5面向?qū)ο笈c繼承的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。
網(wǎng)頁題目:Python3.5面向?qū)ο笈c繼承的示例分析-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://muchs.cn/article12/dhejdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站內(nèi)鏈、定制網(wǎng)站、商城網(wǎng)站、營銷型網(wǎng)站建設(shè)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)