python學(xué)習(xí)筆記7--繼承與魔法方法

# 類的特點 封裝 繼承 多肽(不常用)

#繼承:一個類繼承另一個類句各,就可以使用另一個類里的方法

eg

class Father1:

? ? def hello(self):

? ? ? ? print('hello')

class Father(object):#object->Father->son

? ? def __init__(self,name):#父類的屬性高于兩個子類

? ? ? ? self.name=name

? ? def eat(self):

? ? ? ? print('大吃一頓')

class Son1(Father,Father1):#繼承Father類,可同時繼承多個父類

? ? name='小黑'

class Son2(Father):#繼承中茁彭,訪問的順序逐層son->father->object

? ? name='小白'

son1=Son1('小白')

son2=Son2('小黑')

print(son1.name)

son1.eat()

son1.hello()

print(Father.__bases__)#__bases__查詢其父類名

print(son2.name)

son2.eat()

#如果繼承多個父類 父類中有同種方法 會優(yōu)先繼承最左變得類

#繼承優(yōu)先級 由左到右

class Father:

? ? def __init__(self,name):

? ? ? ? self.name=name

? ? def eat(self):

? ? ? ? print("大吃一頓")

class Mother:

? ? def __init__(self,age,sex):

? ? ? ? self.age=age

? ? ? ? self.sex=sex

? ? def cook(self):

? ? ? ? print('炒菜好吃%s'%self.age)

class son(Father,Mother):

? ? pass

xiaohong=son('name')#此時參數(shù)不會傳入Mother中

print(xiaohong.name)

xiaohong.eat()

xiaohong.age='age'#可使用此方法向Mother傳參

print(xiaohong.age)

xiaohong.cook()

class Base:

? ? def play(self):

? ? ? ? print('this is base')

class A(Base):

? ? def play(self):

? ? ? ? print('this is A')

? ? ? ? super().play()#調(diào)用B甥雕,

class B(Base):

? ? def play(self):

? ? ? ? print('this is B')

class Son(A,B):

? ? def play(self):

? ? ? ? print('this is Son')

? ? ? ? Base().play()#可用于調(diào)用父類

? ? ? ? super().play()#super.方法()調(diào)用父類的方法 遵循mro規(guī)則

#mro 算法解析順序 繼承的順序贬堵,

s=Son()#實例化Son,mro規(guī)則順序為:A->B-Base->object

s.play()

print(Son.__mro__)#通過此語句可以查看mro順序

A().play()

#在使用類里方法的時候 有兩種形式

#1招驴,實例化一個對象 通過對象.方法()

#2,類名().方法()? #類名()? 實例化

#不想使用父類方法砂客,可在子類中重寫進(jìn)行覆蓋

#多繼承? Mix-in(搭積木)設(shè)計模式-->由分到總

# 魔法方法

#運算符方法參考+這種

class A:

? ? def __init__(self,num1,num2):

? ? ? ? self.num1=num1

? ? ? ? self.num2=num2

? ? def __add__(self,other):#由+號調(diào)用

? ? ? ? sum1=self.num1+other.num2

? ? ? ? sum2=self.num2+other.num1

? ? ? ? return sum1,sum2

? ? ? ? print(sum1)

a=A(10,100)

b=A(11,111)

print(a+b)

print(1+2)

# str 和 repr (必須返回字符串)

#print 直接打印對象時,會顯示object和地址

#如果定義了repr呵恢,print打印時會打印這個魔法方法里的內(nèi)容

#如果定義了str就會打印str里的內(nèi)容

#str和repr同時出現(xiàn),只會打印str里的內(nèi)容

class Person:

? ? def play(self):

? ? ? ? print('this is play')

? ? def __str__(self):

? ? ? ? return 'this is str'

? ? def __repr__(self):

? ? ? ? return 'this is repr'

x=Person()

x.play()

# %s 占位符 %r也是占位符

# %s 會調(diào)用str %r會調(diào)用repr

print('%s'%x)#打印時默認(rèn)為str

print('%r'%x)#交互時默認(rèn)為repr

# __str__返回的結(jié)果 可讀性強(qiáng) 方便閱讀者

# __repr__返回的結(jié)果更精確? 方便開發(fā)者

# __call__方法

class Person:

? ? #實例變量加上括號就可以調(diào)用__call__

? ? def __call__(self):

? ? ? ? print('this is call')

h=Person()

h.age=19

h()

print(h.__class__)#查詢類名

print(h.__dict__)#以字典形式輸出實例屬性?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末媚创,一起剝皮案震驚了整個濱河市渗钉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钞钙,老刑警劉巖鳄橘,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芒炼,居然都是意外死亡瘫怜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門本刽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲸湃,“玉大人,你說我怎么就攤上這事子寓“堤簦” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵斜友,是天一觀的道長炸裆。 經(jīng)常有香客問我,道長鲜屏,這世上最難降的妖魔是什么烹看? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮洛史,結(jié)果婚禮上惯殊,老公的妹妹穿的比我還像新娘。我一直安慰自己也殖,他們只是感情好靠胜,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著毕源,像睡著了一般浪漠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霎褐,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天址愿,我揣著相機(jī)與錄音,去河邊找鬼冻璃。 笑死响谓,一個胖子當(dāng)著我的面吹牛损合,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娘纷,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嫁审,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赖晶?” 一聲冷哼從身側(cè)響起律适,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遏插,沒想到半個月后捂贿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡胳嘲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年厂僧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片了牛。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡颜屠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鹰祸,到底是詐尸還是另有隱情汽纤,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布福荸,位于F島的核電站蕴坪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏敬锐。R本人自食惡果不足惜背传,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望台夺。 院中可真熱鬧径玖,春花似錦、人聲如沸颤介。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滚朵。三九已至冤灾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辕近,已是汗流浹背韵吨。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留移宅,地道東北人归粉。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓椿疗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親糠悼。 傳聞我的和親對象是個殘疾皇子届榄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • property、魔法屬性和魔法方法倔喂、多重繼承和多繼承 1.5 property 學(xué)習(xí)目標(biāo) 1. 能夠說出什么要...
    Cestine閱讀 795評論 0 1
  • 一铝条、封裝【private】 1.概念 廣義的封裝:函數(shù)和類的定義本身,就是封裝的體現(xiàn)狹義的封裝:一個類的某些屬性滴劲,...
    hollow_02f9閱讀 1,412評論 0 3
  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,758評論 0 8
  • 基礎(chǔ)1.r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義2.'''...'''表示多行內(nèi)容3. 布爾值:True、False(...
    neo已經(jīng)被使用閱讀 1,681評論 0 5
  • 抽象類 什么是抽象類 與java一樣,python也有抽象類的概念但是同樣需要借助模塊實現(xiàn)芯砸,抽象類是一個特殊的...
    go以恒閱讀 608評論 0 3