python入門3

繼承

雖然子類Bosi沒有__init__()方法,但是父類有,所以子類在繼承父類時,這個方法也被繼承了。所以只要創建了Bosi的對象,就默認執行繼承過來的__init__()方法。

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

當子類和父類擁有同一方法是,調用誰的方法。觀察如下代碼:

子類和父類同有__init__()方法,在對象調用時,子類的__init__()方法會覆蓋父類的__init__()方法。

關于對象調用時的地址和繼承調用時的地址,觀察如下代碼:

可以看出,他們的地址是一樣的。

私有的屬性和方法都不能被繼承,也不能被對象直接調用,可以通過方法訪問。一般情況下,私有的屬性和方法都是不對外公布的,往往用來做內部的事情,起到安全的作用。

一個子類不僅可以單一繼承,也可以多繼承。當一個子類有多個父類時,具體的操作代碼如下:

從以上的例子可以看出,當存在多個父類時,且這些父類擁有同名的方法,子類會按照繼承的順序去調用方法,而不會發生父類方法的重寫。

如果想子類父類都有該方法,如何重寫子類覆蓋的父類方法,方式有兩種。具體代碼如下:

使用super().父類方法名()可以實現重寫父類方法,但因為是按繼承順序調用的父類方法,所以父類F2()中的test ()方法不會被調用。如何在不修改繼承順序的情況下調用父類F2()中的test ()方法。代碼如下:

通過父類名.父類方法名(self)可以實現想要訪問的父類方法。

對于屬性的賦值,如果在子類中對特殊屬性賦值時,將會覆蓋父類對于共有屬性的定義,所以可以采用以上的方法對屬性賦值:

通過以上代碼,不僅完成了對Dog()這一類特殊屬性的賦值,也完成了父類Animal()的通用屬性的賦值。

類屬性、實例屬性

class?Student():

name?=?'Tony'

__age?=?18

stu1?=?Student()

print(stu1.name)輸出Tony

print(Student.name)輸出Tony

print(stu1.__age)報錯,不能在類外通過實例對象訪問私有的類屬性

print(Student.__age)報錯,不能在類外通過類對象訪問私有的類屬性

class?People(object):

#類屬性

address?=?'山東'

def?__init__(self):

self.name?=?'xiaowang'

self.age?=?20

p?=?People()

p.age?=12

print(p.address)

print(p.name)

print(p.age)

print(People.address)

print(People.name)

print(People.age)

輸出結果如上所示。如何通過實例對象修改類屬性?

如果需要在類外修改類屬性,必須通過類對象去引用然后進行修改。如果通過實例對象去引用,會產生一個同名的實例屬性,這種方式修改的是實例屬性,不會影響到類屬性,并且之后如果通過實例對象去引用該名稱的屬性,實例屬性會強制屏蔽掉類屬性,即引用的是實例屬性,除非刪除了該實例屬性。

類方法

是類對象所擁有的方法,需要用修飾器@classmethod來標識其為類方法,對于類方法,第一個參數必須是類對象,一般以cls作為第一個參數(當然可以用其他名稱的變量作為其第一個參數,但是大部分人都習慣以'cls'作為第一個參數的名字,就最好用'cls'了),能夠通過實例對象和類對象去訪問。

class?People(object):

country?=?'china'

#類方法,用classmethod來進行修飾

@classmethod

def?getCountry(cls):

return?cls.country

p?=?People()

print(p.getCountry())#可以用過實例對象引用

print(People.getCountry())????#可以通過類對象引用

類方法還可以對類屬性進行修改

class?People(object):

country?=?'china'

#類方法,用classmethod來進行修飾

@classmethod

def?getCountry(cls):

return?cls.country

@classmethod

def?setCountry(cls,country):

cls.country?=?country

p?=?People()

print(p.getCountry())?????????#可以用過實例對象引用

print(People.getCountry())????#可以通過類對象引用

p.setCountry('japan')

print(p.getCountry())

print(People.getCountry())

靜態方法

需要通過修飾器@staticmethod來進行修飾,靜態方法不需要多定義參數

class?People(object):

country?=?'china'

@staticmethod

#靜態方法

def?getCountry():

return?People.country

print(People.getCountry())

從類方法和實例方法以及靜態方法的定義形式就可以看出來,類方法的第一個參數是類對象cls,那么通過cls引用的必定是類對象的屬性和方法;而實例方法的第一個參數是實例對象self,那么通過self引用的可能是類屬性、也有可能是實例屬性(這個需要具體分析),不過在存在相同名稱的類屬性和實例屬性的情況下,實例屬性優先級更高。靜態方法中不需要額外定義參數,因此在靜態方法中引用類屬性的話,必須通過類對象來引用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,641評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,604評論 2 380

推薦閱讀更多精彩內容