国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站要學(xué)多久電商運(yùn)營

做網(wǎng)站要學(xué)多久,電商運(yùn)營,投資建設(shè)個(gè)什么網(wǎng)站好,什么網(wǎng)站教你做美食文章目錄 前言一、類定義語法二、私有方法和私有屬性1.私有屬性2.私有方法 三、類“繼承”1.初識(shí)繼承2.使用super函數(shù)調(diào)用父類中構(gòu)造的東西 四、類“多態(tài)”1.多態(tài)基礎(chǔ)2.子類不同形態(tài)3.使用isinstance函數(shù)與多態(tài)結(jié)合判斷類型 總結(jié) 前言 大家好,我是BoBo仔吖&#xf…

文章目錄

  • 前言
  • 一、類定義語法
  • 二、私有方法和私有屬性
    • 1.私有屬性
    • 2.私有方法
  • 三、類“繼承”
    • 1.初識(shí)繼承
    • 2.使用super函數(shù)調(diào)用父類中構(gòu)造的東西
  • 四、類“多態(tài)”
    • 1.多態(tài)基礎(chǔ)
    • 2.子類不同形態(tài)
    • 3.使用isinstance函數(shù)與多態(tài)結(jié)合判斷類型
  • 總結(jié)

前言

大家好,我是BoBo仔吖,上3節(jié)課我們學(xué)習(xí)了類的基礎(chǔ)知識(shí)。這節(jié)課,我們要講一些深入的東西。
是什么呢?看看就知道!

一、類定義語法

其實(shí),我們學(xué)習(xí)的class類都可以看做我們定義的功能語法
之前我講解type函數(shù)的時(shí)候也說到了我們的牢大class
這是我們的文章
https://blog.csdn.net/m0_69481332/article/details/138410028?spm=1001.2014.3001.5501
這里有一個(gè)內(nèi)容要注意:
在這里插入圖片描述
這幅圖片我給大家扣過來了,大家會(huì)發(fā)現(xiàn):這里我們通過type函數(shù)判斷類型后(其實(shí),list等等也是一個(gè)類哦),下面的輸出是<class'類型'>
大家是不是也看看讓自己的類的語法形式?使用type方法即可!

還是有栗子:
在這里插入圖片描述
這是我們上次的例子
我們都知道,我們把類GameB賦予了變量game_begin
所以,我們用type來檢驗(yàn)它的時(shí)候便反映了它的類語法形式,也就是GameB
這里還有一個(gè)main

<class '__main__.GameB'>

這里出現(xiàn)了__main__方法,因?yàn)檫@是我們自己定義的類語法空間

這就是類定義語法,非常簡單似不似?
接下來,我們學(xué)習(xí)一些更加深入的內(nèi)容

二、私有方法和私有屬性

1.私有屬性

我們還是把我們之前的例子拿出來

class GameB:def __init__(self,exp,grade):self.exp = expself.grade = gradedef print_message(self):print('經(jīng)驗(yàn)值',self.exp)print('等級(jí)',self.grade)game_begin = GameB('0',1)
game_begin.print_message()
print(type(game_begin))

這里我們把class GameB的設(shè)定叫做定義類,而其中的函數(shù)則稱為方法
為什么要扯概念?因?yàn)檫@個(gè)東東非常重要

接下來,我們來講一個(gè)和上文一點(diǎn)不搭噶的東西

class Dog:def __init__(self,name):self.__name = nameself.__age = Noneprint(self.__name,'生成成功!')def set_age(self,age):if not isinstance(age,int):#這里的函數(shù)isinstance是判斷它括號(hào)內(nèi)的兩個(gè)參數(shù)中,參數(shù)1是否是參數(shù)2的類型,如果不是就執(zhí)行下面的操作,通常作為條件使用print('輸入的年齡必須是數(shù)字!')return Falseif age <= 0:print('年齡必須大于0!')return Falseself.__age = agedef play(self):print('汪汪汪!我今年',self.__age)dog =Dog('旺財(cái)')
dog.set_age('hello!')
dog.set_age(-20)
dog.set_age(3)
dog.play()

這是一個(gè)生成dog角色的函數(shù),這里我們發(fā)現(xiàn)有一個(gè)非常眼生的東西:私有屬性
私有屬性的屬性呢和他的本身命名的特性差不多,是一個(gè)“私有”屬性
大家可以把私有屬性看做一件事情:
我們在家里可能穿睡衣,穿拖鞋;但是,我們在外面就不會(huì)穿的這么奇怪
我們就可以把家里看做class類里,外面看做class類外的代碼,這樣大家是不是就理解多了呢?

這里的結(jié)構(gòu)是__(下劃線×2)對象名
這個(gè)私有屬性呢與我們普通的屬性有一個(gè)顯著的特點(diǎn)就是他不能直接改動(dòng),而是需要在某個(gè)特定的函數(shù)中再次修改,且不能再類以外的地方調(diào)用
例如這里,我們構(gòu)造了兩個(gè)私有屬性,它們是__age__name
屬性age只能通過類中的set_age修改,不能再外部直接改動(dòng),否則會(huì)發(fā)生錯(cuò)誤
就像這樣:
在這里插入圖片描述
當(dāng)然,有私有屬性就有私有方法

2.私有方法

這里的方法概念上面提到了,就是我們所封裝的函數(shù)
私有方法的理解也可以向上文那樣:你在家里休息日時(shí)可能9點(diǎn)起,12點(diǎn)睡,打游戲,吃KFC;但是,你上學(xué)或是工作時(shí)就必須早起,調(diào)整作息。
我們還是把家看做類代碼,把外面看做類以外的代碼

我們還是以類Dog為例,構(gòu)造私有方法__say(self,name)
代碼如下:

class Dog:def __say(self,name):print(name)def play(self):print('汪汪汪!')dog = Dog()
dog.play()

這里我們的私有方法沒有起任何作用
而且,這里不能通過類以外區(qū)域來修改這個(gè)函數(shù),否則會(huì)出現(xiàn)錯(cuò)誤

大家學(xué)會(huì)私有概念了嗎?如果學(xué)會(huì),那么你的類使用就更加靈活咯!!!

三、類“繼承”

繼承呢我們往往會(huì)聯(lián)想到一些時(shí)間:老父親的特征往往會(huì)繼承給兒女,這就是生理繼承(DNA繼承)
這種廣義上的繼承想必大家都知道,那么,在類里,繼承是什么一種概念呢?
還是甩出剛剛的示例,就是那個(gè)生成doggy的模型
這里我們看源代碼,看看有什么相同和不同

1.初識(shí)繼承

class Animal:def __init__(self,name):self.name = name def play(self):print('我是',self.name)class Dog(Animal):#注意看,這就是繼承的格式!!pass#這里我們沒有私有方法,所以這里我們在下面調(diào)用的時(shí)候調(diào)整就可以了dog = Dog('旺財(cái)')#這里繼承了Animal類中的方法,賦給dog之后,就可以轉(zhuǎn)而通過Dog類調(diào)用Animal的內(nèi)容
dog.play()

這里我們的繼承類采用的是這樣的格式:

class 類名【子類】(主類名【或者叫父類】):

我們通過繼承的手法可以更加靈活地使用父類里的東西,而且還能修改(私有屬性或私有方法除外,不可繼承),更加靈活。這里我們的父類Animal受了Dog的調(diào)用,如果我們在dog里修改animal類,那么效果會(huì)更加良好

2.使用super函數(shù)調(diào)用父類中構(gòu)造的東西

class Animal:def __init__(self,name):self.name = namedef play(self):print('我是',self.name)class Dog(Animal):def __init__(self):print('旺財(cái)')dog = Dog()

在這個(gè)例子里,我們在dog類中繼承了Animal,但是由于沒有調(diào)用play,所以只能輸出旺財(cái)

但是,我們?nèi)绻苯邮褂梅椒╬lay,那么就會(huì)出錯(cuò),因?yàn)槲覀兪褂玫氖穷怐og里的構(gòu)造方法,而不是類Animal的構(gòu)造方法,盡管我們繼承了Animal類
如果我們要實(shí)現(xiàn)animal類的構(gòu)造方法,那么我們就要用到super() 內(nèi)置函數(shù)

就像這樣:

class Animal:def __init__(self, name):self.name = namedef play(self):print('我是', self.name)class Dog(Animal):def __init__(self):super(Dog,self).__init__('旺財(cái)')dog = Dog()
dog.play()

我們使用super函數(shù)來調(diào)用我們在Animal類中所繼承的__init__構(gòu)造方法,完之后就可以直接使用play來運(yùn)行Animal類中的內(nèi)容了
怎么樣,是不是很神奇?

四、類“多態(tài)”

多態(tài)是基于繼承上的一種形式,我們可以把它大致理解為“父類的多個(gè)子類”
還是以類Animal為例,來看看使用多態(tài)后結(jié)果如何

1.多態(tài)基礎(chǔ)

還是這個(gè)例子

class Animal:def say(self):print('Animal')class Dog(Animal):passclass Cat(Animal):passdog = Dog()
dog.say()cat = Cat()
cat.say()

這里我們用兩個(gè)形式來繼承Animal,它們分別是類Dog和類Cat
我們的兩個(gè)子類繼承父類Animal之后,使用了父類中的方法say,這個(gè)大家應(yīng)該能理解
接下來,我們來看點(diǎn)深層的內(nèi)容

2.子類不同形態(tài)

這里我們的目標(biāo)是使用2個(gè)不同的子類來通過共同繼承父類Animal來輸出不同的內(nèi)容

其實(shí)也不難,只要在類Dog與Cat中分別加入自己的內(nèi)容即可

具體代碼如下:

class Animal:def say(self):print('Animal')class Dog(Animal):def say(self):print('Dog')class Cat(Animal):def say(self):print('Cat')dog = Dog()
dog.say()cat = Cat()
cat.say()

這里我們的輸出就是Dog與Cat了,我們共同使用了自己所繼承的方法來創(chuàng)造自己不同的結(jié)果,這就是多態(tài)的體現(xiàn)

3.使用isinstance函數(shù)與多態(tài)結(jié)合判斷類型

這個(gè)isinstance函數(shù)呢大家不陌生,之前的一個(gè)章節(jié)中我就用它判斷過類型:對,就是實(shí)戰(zhàn)的那一章,我用這個(gè)來判斷輸入類型(構(gòu)造旺財(cái)?shù)哪且徽n,大家可以翻翻我之前的文章找一找)
具體格式我就不說了,大家可以自己根據(jù)我使用的方法自己練練手
接下來我們直接上代碼
我們的isinstance函數(shù)和我們的多態(tài)是有關(guān)系的,所以我把他放在這里節(jié)里講解

首先,我們像剛剛那樣使用dog變量與cat變量分別迭代類Dog與類Cat

class Animal:def say(self):print('Animal')class Dog(Animal):def say(self):print('Dog')class Cat(Animal):def say(self):print('Cat')dog = Dog()
cat = Cat()

好,不要眨眼,接下來就是重頭戲!

我們這里其實(shí)也能把cat與dog變量看做一種調(diào)用繼承的形式。根據(jù)這個(gè)邏輯,我們可以用isinstance來判斷繼承的正誤,簡稱來說就是看是不是親生的
在這里插入圖片描述

OK,我們先上代碼

class Animal:def say(self):print('Animal')class Dog(Animal):def say(self):print('Dog')class Cat(Animal):def say(self):print('Cat')dog = Dog()
cat = Cat()print(isinstance(dog,Dog))
print(isinstance(dog,Animal))
print(isinstance(cat,Cat))
print(isinstance(cat,Animal))

這里我們的輸出是:

True
True
True
True

好,現(xiàn)在我們知道了,dog和cat都是自己的祖宗親生的了
在這里插入圖片描述
接下來,我們就要好好琢磨琢磨
首先,我們把后面幾行單獨(dú)剔出來檢查

dog = Dog()
cat = Cat()print(isinstance(dog,Dog))
print(isinstance(dog,Animal))
print(isinstance(cat,Cat))
print(isinstance(cat,Animal))

我們這里使用dog和cat兩個(gè)變量“繼承”了類Dog,Cat與Animal
所以,我們的這里的輸出是正確的

我之前講過,其實(shí)我們的數(shù)據(jù)類型,像int,float,str,list等等,其實(shí)都是一個(gè)類,我們只要使用isinstance函數(shù)就能看出,逗號(hào)“,”前的是不是逗號(hào)“,”后的類型。所以,大家現(xiàn)在懂?dāng)?shù)據(jù)類型與類的關(guān)聯(lián)性原理了吧

總結(jié)

好了,今天的內(nèi)容到此結(jié)束。實(shí)在是寫不動(dòng)了,下次再努力吧
下節(jié)課,我們將學(xué)習(xí)類的最后一講:拓展篇,大家敬請期待!如有不懂,別忘了問我喲!下期見~~~

【制作不易,別忘了一圈三連,點(diǎn)個(gè)關(guān)注!!!】

http://aloenet.com.cn/news/46663.html

相關(guān)文章:

  • 為男人做購物網(wǎng)站攜程: 2023年旅行搜索上漲超900%
  • 網(wǎng)站建設(shè)招標(biāo)公告首頁排名關(guān)鍵詞優(yōu)化
  • 鄭州網(wǎng)站建設(shè)方案書網(wǎng)絡(luò)的推廣
  • 微網(wǎng)站制作公司佛山疫情最新消息
  • 濰坊做企業(yè)手機(jī)版網(wǎng)站濰坊在線制作網(wǎng)站
  • 網(wǎng)站設(shè)計(jì)美工多少網(wǎng)絡(luò)推廣電話
  • 中化建工北京建設(shè)投資有限公司網(wǎng)站最新的疫情信息
  • 企業(yè)網(wǎng)站類型市場營銷互聯(lián)網(wǎng)營銷
  • 展示網(wǎng)站報(bào)價(jià)搜索引擎環(huán)境優(yōu)化
  • 什么網(wǎng)站可以做引文分析開發(fā)一個(gè)網(wǎng)站需要哪些技術(shù)
  • 酒泉網(wǎng)站建設(shè)平臺(tái)百度網(wǎng)盤pc網(wǎng)頁版入口
  • 哈爾濱網(wǎng)站建設(shè)與管理今日國際新聞?lì)^條15條
  • 濱海住房和城鄉(xiāng)建設(shè)局網(wǎng)站谷歌查詢關(guān)鍵詞的工具叫什么
  • 做網(wǎng)站的圖片需要多少錢下載百度極速版免費(fèi)安裝
  • 云南省建設(shè)廳招標(biāo)辦網(wǎng)站網(wǎng)絡(luò)營銷活動(dòng)策劃
  • olam wordpress搜索引擎優(yōu)化搜索優(yōu)化
  • 常德市做網(wǎng)站聯(lián)系電話cps廣告聯(lián)盟
  • wordpress注冊增加性別選項(xiàng)seo上首頁
  • 在工商局網(wǎng)站做年報(bào)要交費(fèi)嗎百度網(wǎng)盤登錄入口 網(wǎng)頁
  • 進(jìn)入百度首頁seo優(yōu)化技術(shù)廠家
  • 無人區(qū)免費(fèi)電影入口seo研究中心南寧線下
  • 武漢做營銷型網(wǎng)站建設(shè)寫手接單平臺(tái)
  • 公安局門戶網(wǎng)站建設(shè)方案網(wǎng)絡(luò)營銷的功能有哪些?
  • 展架設(shè)計(jì)在哪個(gè)網(wǎng)站做泉州百度首頁優(yōu)化
  • 網(wǎng)站banner尺寸1920seo 推廣教程
  • 營銷型網(wǎng)站建設(shè)發(fā)難卡點(diǎn)視頻軟件下載
  • 廊坊網(wǎng)站制作公司網(wǎng)站的優(yōu)化和推廣方案
  • 深圳凡科網(wǎng)站建設(shè)廣告策劃公司
  • 網(wǎng)站建設(shè)公司在線qq客服代碼單頁網(wǎng)站怎么優(yōu)化
  • 穆棱建設(shè)局網(wǎng)站二級(jí)域名網(wǎng)址查詢