亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python編程中類與類的關系詳解

系統 1747 0

類與類的關系

依賴關系

            
# 依賴關系: 將一個類的類名或者對象傳給另一個類的方法中.
class Elephant:
  def __init__(self, name):
    self.name = name
  def open(self,r1):
    # print(ref1)
    print(f'{self.name}默念三聲: 芝麻開門')
    r1.open_door()
  def close(self):
    print('大象默念三聲:芝麻關門')
class Refrigerator:
  def __init__(self, name):
    self.name = name
  def open_door(self):
    print(f'{self.name}冰箱門被打開了....')
  def close_door(self):
    print('冰箱門被關上了....')
e1=Elephant('大象')
r1=Refrigerator('海爾冰箱') 
e1.open(r1)   #將一個類的類名或者對象傳給另一個類的方法中.產生了依賴關系
          

組合關系

組合: 將一個類的對象封裝成另一個類的對象的屬性.

            
class Boy:
  def __init__(self, name):
    self.name = name
  def meet(self, girl_friend=None):
    self.girl_friend = girl_friend # wu對象空間 : girl_friend : object對象
  def have_diner(self): # self = wu這個對象空間
    if self.girl_friend:
      print(f'{self.name}請年齡為:{self.girl_friend.age},姓名為{self.girl_friend.name}一起吃六塊錢的麻辣燙')
      self.girl_friend.shopping(self) # (self = wu對象空間)
    else:
      print('單身狗,吃什么吃')
class Girl:
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def shopping(self,boy_friend):
    print(f'{boy_friend.name},{self.name}一起去購物!')
wu = Boy('吳超')
flower = Girl('如花', 48)
# 組合: 將一個類的對象封裝成另一個類的對象的屬性.
wu.meet(flower)
wu.have_diner()
          

繼承關系

繼承的優點:

1,增加了類的耦合性(耦合性不宜多,宜精)。

2,減少了重復代碼。

3,使得代碼更加規范化,合理化

繼承:可以分單繼承,多繼承。

單繼承

第一種:直接執行

            
class Aniaml(object):
  type_name = '動物類'

  def __init__(self,name,sex,age):
      self.name = name
      self.age = age
      self.sex = sex

  def eat(self):
    print(self)
    print('吃東西')
class Person(Aniaml):
  pass
P1=Person('alex','男','18')
# 實例化對象時必須執行__init__方法,類中沒有,從父類找,父類沒有,從object類中找
P1.eat()
# 先要執行自己類中的eat方法,自己類沒有才能執行父類中的方法。
          

第二種:子類和父類都有相同功能,都想執行

            
class Aniaml(object):
  type_name = '動物類'
  def __init__(self,name,sex,age):
      self.name = name
      self.age = age
      self.sex = sex

  def eat(self):
    print('吃東西')

class Person(Aniaml):
  def __init__(self,name,sex,age,mind):
    super().__init__(name,sex,age) # super.__init__ 自動幫你把self 傳給父類的__init__
    self.mind = mind

  def eat(self):
    super().eat()
    print('%s 吃飯'%self.name)
 
    
p1 = Person('春哥','laddboy',18,'有思想')
          

多繼承

            
class A:
  pass
class B(A):
  pass
class C(A):
  pass
class D(B, C):
  pass
class E:
  pass
class F(D, E):
  pass
class G(F, D):
  pass
class H:
  pass
class Foo(H, G):
  pass
          

新式類的多繼承

MRO是一個有序列表L,在類被創建時就計算出來。

通用計算公式為:

            
mro(Child(Base1,Base2)) = [ Child ] + merge( mro(Base1), mro(Base2), [ Base1, Base2] )(其中Child繼承自Base1, Base2)
          

如果繼承至一個基類:class B(A)

這時B的mro序列為

            
mro( B ) = mro( B(A) )
= [B] + merge( mro(A) + [A] )
= [B] + merge( [A] + [A] )
= [B,A]
          

如果繼承至多個基類:class B(A1, A2, A3 …)

這時B的mro序列

            
mro(B) = mro( B(A1, A2, A3 …) )
= [B] + merge( mro(A1), mro(A2), mro(A3) ..., [A1, A2, A3] )
= ...
          

計算結果為列表,列表中至少有一個元素即類自己,如上述示例[A1,A2,A3]。merge操作是C3算法的核心。

4.2.2. 表頭和表尾

表頭:

列表的第一個元素

表尾:

列表中表頭以外的元素集合(可以為空)

示例

列表:[A, B, C]

表頭是A,表尾是B和C

4.2.3. 列表之間的+操作

+操作:

[A] + [B] = [A, B]
(以下的計算中默認省略)

merge操作示例:

如計算merge( [E,O], [C,E,F,O], [C] )
有三個列表 : ① ② ③

1 merge不為空,取出第一個列表列表①的表頭E,進行判斷
各個列表的表尾分別是[O], [E,F,O],E在這些表尾的集合中,因而跳過當前當前列表
2 取出列表②的表頭C,進行判斷
C不在各個列表的集合中,因而將C拿出到merge外,并從所有表頭刪除
merge( [E,O], [C,E,F,O], [C]) = [C] + merge( [E,O], [E,F,O] )
3 進行下一次新的merge操作 ......

以上知識點大家有沒有學會么?感謝大家對腳本之家的支持。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色婷婷中文字幕 | 九九99热久久国产 | 香蕉网伊在线中文慕大全 | 国产精品美女久久久久网 | 国产精品入口麻豆 | 有色视频在线观看 | 爱爱一区 | 久久精品亚洲日本波多野结衣 | 欧美亚洲国产精品久久久 | 精品一区二区三区影片 | 99尹人香蕉国产免费天天在线 | 欧美日韩国产在线成人网 | 欧美亚洲一区二区三区在线 | h片在线 | 午夜视频欧美 | 国产精品免费久久久久影院 | 日本高清中文字幕在线观穿线视频 | 亚洲人和日本人hd | 国产永久在线 | 97超精品视频在线观看 | 久久精品国产亚洲高清 | 免费一级成人免费观看 | 亚洲香蕉视频 | 啪啪网站免费 | a毛片视频免费观看影院 | 色婷婷狠狠久久综合五月 | 久久99精品亚洲热综合 | 极品吹潮视频大喷潮tv | 国产三级做爰在线观看∵ | 国产国语对白一级毛片 | 国产臀控福利视频在线 | 久久水蜜桃 | 四虎永久免费网站入口2020 | 成人亚洲视频在线观看 | 久久婷婷五夜综合色频 | 国产未成女年一区二区 | 91精选在线观看 | 成人激情免费视频 | 99国产福利视频在线观看 | 综合图片区 | 精品一区二区三区在线成人 |