十分鐘學會Python中的單繼承

2021-09-26 16:03:03 字數 3697 閱讀 3322

物件導向的程式語言如果沒有繼承,類就沒有意義。python同樣支援繼承語法。

如果我們認為人類是乙個父類,中國人就是乙個子類;美國人是另乙個子類。

如果我們認為中國人是乙個父類,北京人就是乙個子類;天津人是另乙個子類。

如果我們認為外星人是乙個父類,變形金剛就是乙個子類;氪星人是另乙個子類。

如果我們認為變形金剛是乙個父類,汽車人就是乙個子類;霸天虎是另乙個子類。

如果我們認為超級英雄是乙個父類,漫威英雄就是乙個子類;dc英雄是另乙個子類。

如果我們認為漫威英雄是乙個父類,復仇者就是乙個子類;自殺小隊是另乙個子類。

與多型、封裝共為物件導向的三個基本特徵。 繼承可以使得子類擁有父類的屬性和方法;也可以重新定義、追加屬性和方法。

首先我們建立乙個父類

class

parent

: name:

str age:

intdef

print_message

(self)

:print

("姓名:{} 年齡:{}"

.format

(self.name, self.age)

)

然後建立乙個子類繼承這個類

# 通過()繼承父類

class

child

(parent):id

:str

defprint_id

(self)

:print

("id:{}"

.format

(self.id)

)

則child類實際擁有三個字段 name age id 和兩個自定義方法 print_message 和 print_id

通過繼承,子類可以獲得父類的屬性和方法,此時父類稱為父類(parent class)或超類(super class),子類稱為子類(child class 或 sub class)。另一方面,子類可以建立屬於自己的屬性和方法,在強調這一過程時,繼承也稱作派生,父類稱為基類(bass class),子類稱為派生類(derived class)。

雖然子類可以繼承父類的方法,但是父類的方法不一定適合子類使用。如果父類的方法不適合子類的使用,子類可以宣告乙個同名方法,將父類的方法覆蓋,這個過程稱為【重寫】。

class

parent

: name:

str age:

intdef

print_message

(self)

:print

("姓名:{} 年齡:{}"

.format

(self.name, self.age)

)# 通過()繼承父類

class

child

(parent):id

:str

defprint_id

(self)

:print

("id:{}"

.format

(self.id)

)# 子類重寫父類的同名方法

defprint_message

(self)

:print

("姓名:{} 年齡:{} id:{}"

.format

(self.name,

self.age, self.id)

)

class

parent

: name:

str age:

intdef

print_message

(self)

:print

("姓名:{}\n年齡:{}"

.format

(self.name, self.age)

)# 通過()繼承父類

class

child

(parent):id

:str

# 子類重寫父類的同名方法,通過super呼叫父類同名方法

defprint_message

(self)

:# 首先列印繼承自父類的兩個字段資訊

super()

.print_message(

)# 再列印子類派生的字段的資訊

print

("id:{}"

.format

(self.id)

)

class

parent

:def

__init__

(self, name, age)

: self.__name = name

self.__age = age

@property

defname

(self)

:return self.__name

@name.setter

defname

(self, value)

: self.__name = value

defprint_message

(self)

:print

("姓名:{}\n年齡:{}"

.format

(self.__name, self.__age)

)

@classmethod

defprint_class_name

(cls)

:print

("parent"

) @staticmethod

defprint_class_type()

:print

("parent"

)# 通過()繼承父類

class

child

(parent)

:# 重寫init方法

def__init__

(self, name, age, id_)

:super()

.__init__(name, age)

self.__id = id_

# 屬性的重寫

@property

defname

(self)

:return self.__name[2:

-3] @name.setter

defname

(self, value)

: self.__name =

"[{}]"

.format

(value)

# 子類重寫父類的同名方法,通過super呼叫父類同名方法

defprint_message

(self)

:super()

.print_message(

)print

("id:{}"

.format

(self.__id)

)# 類方法的重寫

@classmethod

defprint_class_name

(cls)

:print

("parent"

)# 靜態方法的重寫

@staticmethod

defprint_class_type()

:print

("parent"

)

十分鐘學會less

譯者 wleonardo 我們都知道在大型的專案中,當css有數千行 的時候,css的編寫有一些麻煩。我們經常會出現複製相同的 到不同的地方或者通過我們的編輯器來替換所有相同的顏色。這需要我們費很大的力氣去保持css的可維護性。但是其實我們並不是一定要這樣。幸運的是,web開發社群已經解決了這個問題...

十分鐘學會Excel匯出

excel匯出在內網系統一般用的很多,一般分為poi和jxl兩種,前者支援excel2003 xls 和excel2007 xlsx 而後者只支援excel2003 xls 所以我們這裡使用poi來做excel 的匯出 我們以匯出員工資訊的資料為例子 第一步 匯入poi的jar包 第二步,在前台寫乙...

課間十分鐘

時間限制 1000 ms 記憶體限制 128 mb 兩人都是數學愛好者,便發明了乙個遊戲。在遊戲開始前,他們先約定乙個正整數n,同時令m 1。遊戲過程中,每個人都可以將m的值擴大2到9中的任意倍數。第乙個使m n的人就是最後的贏家。181818181818和zbt都十分聰明,並且遊戲過程中都使用最佳...