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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

pythonjam怎么运行_第二十四天 PYTHON学习

發(fā)布時(shí)間:2023/12/15 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonjam怎么运行_第二十四天 PYTHON学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【今日學(xué)習(xí)】

一.初識(shí)繼承

1、什么是繼承

繼承是一種創(chuàng)建新類的方式,新建的類可以繼承一個(gè)或多個(gè)父類(python支持多繼承),父類又可稱為基類或超類,新建的類稱為派生類或子類。

子類會(huì)“”遺傳”父類的屬性,從而解決代碼重用問題(比如練習(xí)7中Garen與Riven類有很多冗余的代碼)

2、為什么要有繼承(繼承的好處)

因?yàn)橛行╊悆?nèi)的屬性存在相同的地方,為了避免重用代碼,需要讓一個(gè)類去具備另一個(gè)類的特征和技能。

讓一個(gè)類可以繼承另一個(gè)類所具有的屬性,這個(gè)繼承類不僅有自身屬性,而且還具有被繼承類的屬性。一個(gè)類不僅可以繼承一個(gè)類,而且還可以繼承多個(gè)類。

繼承一個(gè)叫單繼承,繼承多個(gè)叫多繼承。

3、如何區(qū)分誰應(yīng)該繼承誰的問題

先抽象再定義類,然后再區(qū)分誰繼承誰的問題

站的高度不同,抽象出的類具備的特征與技能就不同,

抽象即抽取類似或者說比較像的部分。

抽象分成兩個(gè)層次:

1.將奧巴馬和梅西這倆對(duì)象比較像的部分抽取成類;

2.將人,豬,狗這三個(gè)類比較像的部分抽取成父類。

抽象最主要的作用是劃分類別(可以隔離關(guān)注點(diǎn),降低復(fù)雜度)

繼承:是基于抽象的結(jié)果,通過編程語言去實(shí)現(xiàn)它,肯定是先經(jīng)歷抽象這個(gè)過程,才能通過繼承的方式去表達(dá)出抽象的結(jié)構(gòu)。

抽象只是分析和設(shè)計(jì)的過程中,一個(gè)動(dòng)作或者說一種技巧,通過抽象可以得到類

4、繼承之后的屬性查找順序問題

class Foo:

def f1(self):

print('Foo.f1')

def f2(self):

print('Foo.f2')

self.f1()

class Bar(Foo):

def f1(self):

print('Foo.f1')

b=Bar()

b.f2()

這段代碼很好詮釋了,繼承之后的屬性查找問題,當(dāng)對(duì)象b查找f2函數(shù)時(shí),首先在自身類找有沒有這個(gè)屬性,如果自身類找不到這個(gè)屬性,再

往父輩那找,只要這個(gè)對(duì)象調(diào)用函數(shù)(技能), ?那就優(yōu)先去自身查找有沒有這個(gè)屬性。

二、派生

派生是對(duì)于繼承類講的,繼承類不可能完全與父類具有相同額屬性,還需要自身具備不一樣的屬性,這就是繼承類的派生。

當(dāng)然子類也可以添加自己新的屬性或者在自己這里重新定義這些屬性(不會(huì)影響到父類),需要注意的是,一旦重新定義了自己的屬性且與父類重名,那么調(diào)用新增的屬性時(shí),就以自己為準(zhǔn)了。

三、組合與派生

>>> class Equip: #武器裝備類

... def fire(self):

... print('release Fire skill')

...

>>> class Riven: #英雄Riven的類,一個(gè)英雄需要有裝備,因而需要組合Equip類

... camp='Noxus'

... def __init__(self,nickname):

... self.nickname=nickname

... self.equip=Equip() #用Equip類產(chǎn)生一個(gè)裝備,賦值給實(shí)例的equip屬性

...

>>> r1=Riven('銳雯雯')

>>> r1.equip.fire() #可以使用組合的類產(chǎn)生的對(duì)象所持有的方法

release Fire skill

四、組合與繼承的區(qū)別

組合與繼承都是有效地利用已有類的資源的重要方式。但是二者的概念和使用場(chǎng)景皆不同,

1.繼承的方式

通過繼承建立了派生類與基類之間的關(guān)系,它是一種'是'的關(guān)系,比如白馬是馬,人是動(dòng)物。

當(dāng)類之間有很多相同的功能,提取這些共同的功能做成基類,用繼承比較好,比如老師是人,學(xué)生是人

2.組合的方式

用組合的方式建立了類與組合的類之間的關(guān)系,它是一種‘有’的關(guān)系,比如教授有生日,教授教python和linux課程,教授有學(xué)生s1、s2、s3...

組合與繼承都是有效地利用已有類的資源的重要方式。但是二者的概念和使用場(chǎng)景皆不同,

1.繼承的方式

通過繼承建立了派生類與基類之間的關(guān)系,它是一種'是'的關(guān)系,比如白馬是馬,人是動(dòng)物。

當(dāng)類之間有很多相同的功能,提取這些共同的功能做成基類,用繼承比較好,比如老師是人,學(xué)生是人

2.組合的方式

用組合的方式建立了類與組合的類之間的關(guān)系,它是一種‘有’的關(guān)系,比如教授有生日,教授教python和linux課程,教授有學(xué)生s1、s2、s3...

組合與繼承的區(qū)別代碼描述:

class People:

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

self.name=name

self.age=age

self.sex=sex

class Course:

def __init__(self,name,period,price):

self.name=name

self.period=period

self.price=price

def tell_info(self):

print('' %(self.name,self.period,self.price))

class Teacher(People):

def __init__(self,name,age,sex,job_title):

People.__init__(self,name,age,sex)

self.job_title=job_title

self.course=[]

self.students=[]

class Student(People):

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

People.__init__(self,name,age,sex)

self.course=[]

egon=Teacher('egon',18,'male','沙河霸道金牌講師')

s1=Student('牛榴彈',18,'female')

python=Course('python','3mons',3000.0)

linux=Course('python','3mons',3000.0)

#為老師egon和學(xué)生s1添加課程

egon.course.append(python)

egon.course.append(linux)

s1.course.append(python)

#為老師egon添加學(xué)生s1

egon.students.append(s1)

#使用

for obj in egon.course:

obj.tell_info()

當(dāng)類之間有顯著不同,并且較小的類是較大的類所需要的組件時(shí),用組合比較好

總結(jié)

以上是生活随笔為你收集整理的pythonjam怎么运行_第二十四天 PYTHON学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。