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

歡迎訪問 生活随笔!

生活随笔

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

python

Python中面向对象的讲解(2)

發布時間:2025/3/20 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中面向对象的讲解(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.繼承

在程序中,繼承描述的是多個類之間的所屬關系。

如果一個類A里面的屬性和方法可以復用,則可以通過繼承的方式,傳遞到類B里。
那么類A就是基類,也叫做父類;類B就是派生類,也叫做子類。

案例:

# 父類 class A(object):def __init__(self):self.num=50def print_num(self):print(self.num+100) # 子類 class B(A):pass b=B() print(b.num) b.print_num()


2.單繼承

子類只繼承一個父類

案例:

# 父類 class A(object):def __init__(self):self.car='20款奔馳'def print_car(self):print('老款%s'%self.car) # 子類 class B(A):passa=A() print(a.car) a.print_car()b=B() print(b.car) b.print_car()

子類在繼承的時候,在定義類時,小括號()中為父類的名字
父類的屬性、方法,會被繼承給子類

3.多繼承

子類繼承多個父類

案例1:

# 父類 class A(object):def __init__(self):self.car='20款奔馳'def print_car(self):print('老款%s'%self.car)def lao_car(self):print('20的大奔')class B(object):def __init__(self):self.car='21款背馳'def print_car(self):print('新款%s'%self.car)def xin_car(self):print('21的大奔') # 子類 class C(A,B):passc=C() print(c.car) c.print_car() c.lao_car() c.xin_car()


案例2:

# 父類 class A(object):def __init__(self):self.car='20款奔馳'def print_car(self):print('老款%s'%self.car)def lao_car(self):print('20的大奔') class B(object):def __init__(self):self.car='21款背馳'def print_car(self):print('新款%s'%self.car)def xin_car(self):print('21的大奔') # 子類 class C(B,A):pass c=C() print(c.car) # 執行B的屬性 c.print_car() # 執行B的方法 print(C.__mro__) # 子類的魔法屬性__mro__決定了屬性和方法的查找順序 c.lao_car() # 不重名不受影響 c.xin_car()

多繼承可以繼承多個父類,也繼承了所有父類的屬性和方法
注意:如果多個父類中有同名的 屬性和方法,則默認使用第一個父類的屬性和方法(根據類的魔法屬性mro的順序來查找)
多個父類中,不重名的屬性和方法,不會有任何影響。

4.子類重寫父類的同名屬性和方法

案例:

# 父類 class A(object):def __init__(self):self.car='20款奔馳'def print_car(self):print('老款%s'%self.car)class B(object):def __init__(self):self.car='21款背馳'def print_car(self):print('新款%s'%self.car) # 子類 class C(B,A):def __init__(self):self.car='22款奔馳'def print_car(self):print('最新款%s'%self.car) c=C() print(c.car) # 執行B的屬性 c.print_car() # 執行B的方法 print(C.__mro__) # 子類的魔法屬性__mro__決定了屬性和方法的查找順序


5.子類調用父類同名屬性和方法

案例:

# 父類 class A(object):def __init__(self):self.car='20款奔馳'def print_car(self):print('老款%s'%self.car)class B(object):def __init__(self):self.car='21款背馳'def print_car(self):print('新款%s'%self.car) # 子類 class C(B,A):def __init__(self):self.car='22款奔馳'def print_car(self):print('執行子類的__init__方法前,self.car的屬性:%s'%self.car)self.__init__() # 執行本類的__init__方法,屬性初始化print('執行子類的__init__方法前,self.car的屬性:%s' % self.car)print('最新款%s'%self.car)def print_lao_car(self):print('執行A的__init__方法前,self.car的屬性:%s' % self.car)A.__init__(self) # 執行本類的__init__方法,屬性初始化print('執行A的__init__方法前,self.car的屬性:%s' % self.car)A.print_car(self)def print_xin_car(self):print('執行B的__init__方法前,self.car的屬性:%s' % self.car)B.__init__(self) # 執行本類的__init__方法,屬性初始化print('執行B的__init__方法前,self.car的屬性:%s' % self.car)B.print_car(self)c=C() c.print_car() print('*'*10) c.print_lao_car() print('*'*10) c.print_xin_car() print('*'*10) c.print_car()



6.多層繼承

class A(object):def __init__(self):self.car='20款奔馳'def print_car(self):print('老款%s'%self.car) class B(object):def __init__(self):self.car='21款奔馳'def print_car(self):print('新款%s'%self.car) class C(B,A):def __init__(self):self.car='22款奔馳'self.money=40def print_car(self):self.__init__()print('最新款%s'%self.car)def print_lao_car(self):A.__init__(self) # 執行A類的__init__方法,屬性初始化A.print_car(self)def print_xin_car(self):B.__init__(self) # 執行B類的__init__方法,屬性初始化B.print_car(self) class D(C): # 多層繼承pass d=D() d.print_car() d.print_lao_car() d.print_xin_car()


7.調用父類方法super()

案例:

class Animal(object):def play(self):print('動物就是玩') class Dog(Animal):def play(self):super().play()print('狗改不了吃屎') d=Dog() d.play()


8.案例

class Gupiao(object):def xinqing(self):print('股票買入和賣出')class Gongmu(Gupiao):def lianghua(self):super().xinqing()print('公募機構買入和賣出')class Simu(Gupiao):def lianghua(self):Gupiao.__init__(self)Gupiao.xinqing(self)print('私募機構買入和賣出')def xinqing(self):print('專研自己的輸出股票和私募買入和賣出')g=Gongmu() g.lianghua() print('*'*10) s=Simu() s.lianghua() s.xinqing()

總結

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

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