日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python面向对象继承_四. python面向对象(继承)

發布時間:2023/12/4 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python面向对象继承_四. python面向对象(继承) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 繼承

class A:pass #父類 基類 超類

class B:pass #父類 基類 超類

class A_son(A,B): pass #子類 派生類

class AB_son(A):pass #子類 派生類#一個類 可以被多個類繼承#一個類可以繼承多個父類

print(A_son.__bases__) #查看類的繼承__bases__ (, )

print(AB_son.__bases__) #查看類的繼承__bases__ (,)

print(A.__bases__) #查看類的繼承__bases__ 在python 中沒有父類 都是 object兒子 (,)

classPer(object):def __init__(self,name,age,sex):

self.name=name

self.age=age

self.sex=sexclassDog(Per):passaa=Dog("張三",25,"男")print(aa.age) #25

print(aa.name) #張三

classAa(object):def __init__(self, name,aggr,hp):

self.name=name

self.aggr=aggr

self.hp=hpdefeat(self):print("吃了啊哈哈哈1111111111111111111111111111111111哈")classDo(Aa):def __init__(self, name, aggr,hp,kind):

Aa.__init__(self,name,aggr,hp)

self.kind=kinddefeat(self):

Aa.eat(self)#去繼承父類的吃的方法 意思是既想實現新的功能 也想使用父類原有的功能 還需要在子類中再調用

print("222222222222222222222222222222222222222lalalalallaal")

aa=Do("張三",100,22,5)print(aa.name) #張三

print(aa.kind) #5

print(aa.aggr) #100

print(aa.hp) #22

aa.eat()#父類方法 和子類方相同 同時調用了#吃了啊哈哈哈1111111111111111111111111111111111哈#222222222222222222222222222222222222222lalalalallaal

classAa(object):def __init__(self, name,aggr,hp):

self.name=name

self.aggr=aggr

self.hp=hpdefeat(self):print("吃了啊哈哈哈哈")classDo(Aa):def __init__(self, name, aggr,hp,kind,lover):

super().__init__(name, aggr,hp)

self.kind=kind #自己的屬性叫派生屬性

self.lover=loverdefeat(self):print("2222222222222222222222222")

aa=Do("張三",100,22,5,66666666666666)

aa.eat()#這個是調用自己的方法

print(aa.lover) #66666666666666

super(Do,aa).eat()#super 是可以掉用父類的方法 格式 是 super(被繼承的類,實例化)

#這是爸爸類

classBaba(object):

money= 100

def __init__(self, name):print("爸爸")

self.name=namedefda_ren(self):print("%s正在打兒子" %self.name)#兒子類

classSon(Baba):pass

print(Son.money) #100

print(Baba.__dict__)print(Son.__dict__)#{'__module__': '__main__', 'money': 100, '__init__': , 'da_ren': , '__dict__': , '__weakref__': , '__doc__': None}#{'__module__': '__main__

#這是爸爸類

classBaba(object):

money=100

def __init__(self,name):

self.name=namedefda_ren(self):print("%s正在打兒子"%self.name)#兒子類

classSon(Baba):passa1=Son("張三")print(a1.name)print(a1.money)#爸爸#張三#100

classPerson(object):def __init__(self, name, gender):

self.name=name

self.gender=genderdefrun(self,aa):print("我喜歡%s是一個"%aa,self.gender)classTeacher(Person):def __init__(self, name, gender, course,age):

super(Teacher, self).__init__(name, gender)

self.course=course

self.age=agedefsuger(self,cc):print("我是"+self.name+"喜歡"+self.course+"年齡%s"%cc)defrun(self):print("我是子類哈哈哈哈")

t= Teacher('張三', '男', 'English',"22")print(t.name) #張三

print(t.course) #English

print(t.age) #22

t.run() #如果子類和父類定義的方法名相同時 默認時先調用子類

t.suger("222222")#使用super去調用父類方法

aa=super(Teacher,t)

aa.run("3333333333333")#張三#English#22#我是子類哈哈哈哈#我是張三喜歡English年齡222222#我喜歡3333333333333是一個 男

繼承一個類:

如果已經定義了Person類,需要定義新的Student和Teacher類時,可以直接從Person類繼承:classPerson(object):def __init__(self, name, gender):

self.name=name

self.gender=gender

定義Student類時,只需要把額外的屬性加上,例如score:classStudent(Person):def __init__(self, name, gender, score):

super(Student, self).__init__(name, gender)

self.score=score

一定要用 super(Student, self).__init__(name, gender) 去初始化父類,否則,繼承自 Person 的 Student 將沒有 name 和 gender。

函數super(Student, self)將返回當前類繼承的父類,即 Person ,然后調用__init__()方法,注意self參數已在super()中傳入,在__init__()中將隱式傳遞,不需要寫出(也不能寫)。

classPerson(object):def __init__(self, name, gender):

self.name=name

self.gender=genderdefrun(self,aa):print("我喜歡%s是一個"%aa,self.gender)classTeacher(Person):def __init__(self, name, gender, course,age):

Person.__init__(self,name, gender)

self.course=course

self.age=agedefsuger(self,cc):print("我是"+self.name+"喜歡"+self.course+"年齡%s"%cc)defrun(self):print("我是子類哈哈哈哈")

t= Teacher('張三', '男', 'English',"22")print(t.name) #張三

print(t.course) #English

print(t.age) #22

t.run() #如果子類和父類定義的方法名相同時 默認時先調用子類

t.suger("222222")#使用super去調用父類方法

aa=super(Teacher,t)

aa.run("3333333333333")#張三#English#22#我是子類哈哈哈哈#我是張三喜歡English年齡222222#我喜歡3333333333333是一個 男

#溫度temperature

#多態:就是運行時 綁定的狀態

classH2o(object):def __init__(self,name,temperature):

self.name=name

self.temperature=temperaturedefturn_ice(self):if self.temperature<0:print("[%s]溫度太低結冰了"%self.name)elif self.temperature>0 and self.temperature<100:print("[%s]液化成水"%self.name)elif self.temperature>100:print("[%s]溫度太高成水蒸氣"%self.name)#水

classWater(H2o):pass

#固態

classIce(H2o):pass

#氣態

classSteam(H2o):passa1=Water("水",60)

a2=Ice("冰",-100)

a3=Ice("蒸汽",1000000)#就是不同的對象調用相同的方法

deffunc(obj):

obj.turn_ice()

func(a1)#[水]液化成水

func(a2) #[冰]溫度太低結冰了

func(a3) #[蒸汽]溫度太高成水蒸氣

#定義交通工具 地鐵

#速度 speed#乘坐 lood#能源 power## 那條線路 line#定義交通工具

classVehicle:

Country="china"

def __init__(self, name,speed,load,power):

self.name=name

self.speed=speed

self.load=load

self.power=powerdefrun(self):print("地鐵開動了1111111111111111111111111111111")#地鐵

classSubway(Vehicle):def __init__(self,name,speed,load,power,line):

Vehicle.__init__(self,name,speed,load,power) #調用父類的方法實例

self.line=linedefshow_info(self):print(self.name,self.line,self.speed,self.load,self.power)defrun(self):print("%s %s開的了"%(self.name,self.line))

a=Vehicle("成都地鐵","10m/s","500人","電")

a.run()#地鐵開動了1111111111111111111111111111111

a=Subway("成都地鐵","10m/s","500人","電","6號線")

a.show_info()#成都地鐵 6號線 10m/s 500人 電

a.run()#成都地鐵 6號線開的了

print(a.Country)#china

#定義交通工具 地鐵

#速度 speed#乘坐 lood#能源 power## 那條線路 line

#定義交通工具

classVehicle:

Country="china"

def __init__(self, name,speed,load,power):

self.name=name

self.speed=speed

self.load=load

self.power=powerdefrun(self):print("地鐵開動了1111111111111111111111111111111")#地鐵

classSubway(Vehicle):def __init__(self,name,speed,load,power,line):

Vehicle.__init__(self,name,speed,load,power) #調用父類的方法實例

self.line=linedefshow_info(self):print(self.name,self.line,self.speed,self.load,self.power)defrun(self):

Vehicle.run(self)#調用父類的方法

print("%s %s開的了"%(self.name,self.line))

a=Subway("成都地鐵","10m/s","500人","電","6號線")

a.show_info()#成都地鐵 6號線 10m/s 500人 電

a.run()#成都地鐵 6號線開的了

print(a.Country)#china

"""Vehicle.__init__(self,name,speed,load,power)

相當于調用父類的

def __init__(self, name,speed,load,power):

self.name=name

self.speed=speed

self.load=load

self.power=power"""

1. 多繼承

類名.__mro__方法 查看廣度優先的繼承順序

# 多繼承:

# 按照名字順序 繼承

# 新式類 :廣度優先 類名.mro方法 查看廣度優先的繼承順序

# 經典類 : 深度優先

class A:

def func(self):

print("A")

class B:

def func(self):

print("B")

class C:

def func(self):

print("C")

class D(A,B,C):

def func(self):

print("D")

f=D()

f.func()

print(D.__mro__)

#

# (, , , , )

classA:deffunc(self):print("A")classB:deffunc(self):print("B")classC:deffunc(self):print("C")classD(A,B,C):deffunc(self):print("D")

f=D()

f.func()

super(D,f).func()

使用import 來繼承(分文件來繼承 注意在同一個文件夾下面)

#per.py 文件

classPer(object):def __init__(self,name,age,sex):

self.name=name

self.age=age

self.sex=sexdefeat(self):print("我是吃吃—————我是人類吃———————————>")defsu(self):print("我性別是男-----",self.sex)

#gril.py 文件

from per importPerclassGr(Per):def __init__(self,name,age,sex,money,like):

super().__init__(name,age,sex)

self.money=money

self.like=likedefeat(self):#Per.eat(self)

print("我是女子吃吃吃-=========1111111111111111====>")defo(self):print("這是錢",self.money)

# son.py 文件

from per importPerclassSo(Per):def __init__(self,name,age,sex,xi,wa,lan):

super().__init__(name,age,sex)

self.xi=xi

self.wa=wa

self.lan=landefp(self):print("我是帥哥了哈哈哈")deff(self,cc):print(self.lan,"---------------比較花錢",cc)

#mian.py 執行文件

from gril importGrfrom son importSoif __name__=="__main__":

aa=Gr("張三",25,"女","20000元","漂亮")

aa.su()#我性別是男----- 女

aa.eat() #我是女子吃吃吃-=========1111111111111111====>

aa.o() #這是錢 20000元

super(Gr,aa).eat() #我是吃吃—————我是人類吃———————————>

print("***********************************11111111111111111111*******************************************")

bb=So("李四",6666,"男","哈哈","222","nice to")

bb.su()#我性別是男----- 男

bb.eat()#我是吃吃—————我是人類吃———————————>

bb.p()#我是帥哥了哈哈哈

bb.f("去你媽的哈哈哈哈")#nice to ---------------比較花錢 去你媽的哈哈哈哈

例子 爸爸和媽媽方法? ? ? ?都讓兒子繼承

#Father.py

classFather(object):def __init__(self,money):

self.money=moneydefplay(self):print("這是paly哈哈哈哈哈哈哈哈")deffunc(self):print("這是func111111111111111111啦啦啦啦啦啦啦啦")

#Mother.py 文件

classMother(object):"""docstring for Father"""

def __init__(self,faceValue):

self.faceValue=faceValuedefeat(self):print("我要吃哈哈哈哈eat")deffunc(self):print("這事了綠綠綠綠func")

Child.py 文件#多繼承 這個Child 即繼承了父類 和母類

from Father importFatherfrom Mother importMotherclassChild(Father,Mother):def __init__(self,money,faceValue):

Father.__init__(self,money)

Mother.__init__(self,faceValue)

#mian.py 執行文件

from Child importChilddefmain ():

c=Child(300,100)print(c.money,c.faceValue)

c.piay()

c.eat()#注意:父類中方法名相同 默認調用的是在括號中排前面的父類中方法

c.func()if __name__=="__main__":

main()

#a.py 文件

classAa (object):

name="張三"age=0def __init__(self,lover,la):

self.lover=lover

self.la=ladefaa(self):print("11")print(self.la)defbb(self):print("22")print(self.lover)

#b.py文件

classBa(object):defcc(self):print("33")defdd(self):print("44")

mian.py 執行文件from a importAafrom b importBa#方法一

classCc(Aa,Ba):def __init__(self,lover,la,idi):

super(Cc,self).__init__(lover,la)

self.idi=ididefgg(self):print(self.idi)

f=Cc("66666","888888",7)

f.aa()

f.bb()

f.gg()#方法二

classCc(Aa,Ba):def __init__(self,lover,la,hh):

self.__hh=hh

Aa.__init__(self,lover,la)

Ba.__init__(self)defjj(self):print(self.__hh)

f=Cc("66666","888888",99999)

f.aa()

f.bb()

f.jj()print(Cc.name)

總結

以上是生活随笔為你收集整理的python面向对象继承_四. python面向对象(继承)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。