欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python基礎(chǔ)之面向?qū)ο蟮娜筇卣?15)

系統(tǒng) 1648 0

self:
1.只是一個(gè)參數(shù)。
2.在對(duì)象使用方法的時(shí)候,當(dāng)前對(duì)象會(huì)作為第一個(gè)參數(shù)的實(shí)參傳入
3.self相當(dāng)于語(yǔ)言中的代詞,表示當(dāng)前對(duì)象本身(其他語(yǔ)言中也有使用this)
4.self的作用連接整個(gè)對(duì)象的所有信息。橋梁的作用!
5.self不是關(guān)鍵字,只是一個(gè)參數(shù)變量名而已,可以使用其他單詞代替(禁止代替)
6.方法的初步分類:
方法中具有接受對(duì)象的參數(shù)這個(gè)方法,叫做非綁定類的方法
方法中沒有接受對(duì)象的參數(shù)這個(gè)方法,叫做綁定類的方法:即 將def func(self)中的self 去掉,在用對(duì)象進(jìn)行訪問時(shí)因?yàn)闆]有self 接受對(duì)象參數(shù),所以不能用對(duì)象訪問,只能通過類去訪問,類和成員方法綁定了.

class Human():
name=“林曉迪”
tall=“180”
def love(self):
print(self.name,“喜歡漂亮的花姑娘”)
def make(self):
self.love()
print(“愛做飯”)
def made():
print(“會(huì)做人”)
man=Human()
man.love()
man.make()

man.made() 類和成員方法被綁定,不能使用對(duì)象訪問

Human.made()

結(jié)果:
林曉迪 喜歡漂亮的花姑娘
林曉迪 喜歡漂亮的花姑娘
愛做飯

面向?qū)ο蟮娜筇卣鳎?
封裝,繼承與多態(tài)
封裝特征:
實(shí)際工作中很多的成員不方便為對(duì)象之外的訪問或者操作的,所以需要限定以下是否可以操作成員。
封裝特性就是對(duì)于成員操作進(jìn)行限制的保護(hù)性措施!
封裝方法:__屬性 __方法
面向?qū)ο蟮姆庋b分為三個(gè)級(jí)別:
私有化封裝 private
受保護(hù)的封裝 protected(在繼承中講解)
公共的封裝 public

對(duì)象/類成員的訪問:
1.當(dāng)前類/對(duì)象內(nèi)部訪問 (在類的結(jié)構(gòu)內(nèi)部)
2.類和對(duì)象的外部訪問 (在類的結(jié)構(gòu)外部)
3.類和對(duì)象的子類/子對(duì)象的訪問(在類的結(jié)構(gòu)外部,在子類/對(duì)象的內(nèi)部)
公共的封裝:
方法: 任何成員在沒有進(jìn)行私有化操作的時(shí)候默認(rèn)都是公共的封裝。
特征: 公共的封裝成員屬性和方法,在任何位置都可以被訪問。
一般我們寫的class都是公共封裝

class FengZhuang:
sex = “機(jī)器人”
name = “人工智能”
# 成員方法
def feng(self):
print(“封印起來(lái)”)
fz = FengZhuang()

受保護(hù)的封裝:(警示禁止使用效果,但不具備阻止訪問的能力)
內(nèi)部訪問:名稱前加_單下劃線即可

class Human():
name = “馬云”
_money = 100000000
def made(self):
print(“每天忙著賺錢,養(yǎng)家,大佬您辛苦了~”)

class Man(Human):
name = “張文廣”
def _make(self):
self.made()
print(“拿到{}錢了,每天吃喝玩樂”.format(self._money))

wenguang = Man()
wenguang._make() #都可以訪問
print(wenguang._money)

私有化封裝:
方法:在成員屬性或者方法名稱之前,添加雙下劃線,就可以私有化成員。
特征:私有化的成員屬性和方法,無(wú)法在類/對(duì)象的外部訪問;私有化成員僅允許在類/對(duì)象的內(nèi)部訪問

class Human():
name = “人類”
__girlfriend = “女朋友”
def move(self):
print(self.__girlfriend)
self.__love()
print(“人類使用交通工具”)
def __love(self):
print(“開心的造人”)
wenguang = Human()
wenguang.move() #通過內(nèi)部可訪問_love(self)的成員方法

print(wenguang.__girlfriend) 無(wú)法輸出報(bào)錯(cuò)

print(Human.girlfriend) 無(wú)法輸出報(bào)錯(cuò)

python封裝秘密(并沒有實(shí)現(xiàn)真正的私有化!):(了解,但是不允許使用)
其實(shí)python沒由實(shí)現(xiàn)和其他語(yǔ)言一樣的面向?qū)ο蠓庋b策略(還不是很完備)

私有化封裝采用了name mangling(改名) 的策略實(shí)現(xiàn)的私有化操作。并不是真正的私有化!
改名策略:將原有成員屬性或者方法名 修改為 _類名__成員名
訪問使用對(duì)象._類名__成員名即可

class Human():
name = “人類”
__girlfriend = “女朋友”
def move(self):
print(self.__girlfriend)
self.__love()
print(“人類使用交通工具”)
def __love(self):
print(“開心的造人”)
wenguang = Human()

print(wenguang._Human__girlfriend)
wenguang._Human__love()
繼承
繼承父母的愿望,繼承父母的財(cái)產(chǎn),繼承支付寶。。。
計(jì)算機(jī)中繼承:
面向?qū)ο笾械睦^承就表示一個(gè)類獲取另外一個(gè)類的成員的操作。(并非所有成員)

繼承相關(guān)的概念:
被其他類繼承的類,這個(gè)類叫做父類,也叫做基類或者超類
繼承其他類的類,這個(gè)類叫做子類,也叫做派生類

繼承的意義:
提高代碼的重用率,建立新的類與類的關(guān)系,方便其他邏輯操作。

繼承的特征:
1.在不指定父類的情況下,所有的類均繼承自object類(系統(tǒng)提供的)
2.子類繼承父類就具有父類的所有成員。
3.子類繼承父類,不會(huì)將父類成員復(fù)制到子類中,子類如果需要成員,可以找父類索?。?
4.私有化的成員,允許在子類中單獨(dú)建立一份,不會(huì)找父類索取私有成員
5.子類可以根據(jù)需求添加自己獨(dú)有的成員來(lái)進(jìn)行操作。
6.子類重載父類的成員。僅僅是對(duì)子類/對(duì)象有效。并不會(huì)影響父類
7.子類在重載父類的方法的時(shí)候,也可以調(diào)用父類的方法來(lái)進(jìn)行操作:
父類名.父類方法名(參數(shù)) -> 任何方式都允許
super().父類方法名() -> 必須是帶有self的對(duì)象方法才可以使用
class Father(object):
__name = “父親”
sex = “男”
money = “1個(gè)億”

            
              def sell(self):
    print("賣包包")
    
def __love(self):
    print("爸爸和媽媽的愛情結(jié)晶")

            
          

class Son(Father):
name = “兒子”

            
              def sell(self):
    super().sell()  #Father.sell(1)
    print("賣表")
    
def love(self):
    print("兒子喜歡年輕漂亮的小姐姐")

            
          

son = Son()
print(Son. dict ) #Son的類信息內(nèi)沒有父類的信息
print(son.sex)

son.sell()
son.love()
單繼承與多繼承?
單繼承:一個(gè)類只能繼承一個(gè)父類的方式。 多繼承:一個(gè)類可以繼承多個(gè)父類的方式。

單繼承:(生物角度) 人類->哺乳類動(dòng)物->動(dòng)物->生物->有機(jī)物…

多繼承:(社會(huì)角度)

舞蹈老師(教舞蹈) 體育老師(運(yùn)動(dòng)) 爸爸(帥氣) 媽媽(打掃衛(wèi)生)

我(舞蹈,運(yùn)動(dòng),帥氣,打掃衛(wèi)生)
單繼承案例:

血緣關(guān)系

class GrandFather():
money = 10000000

class Father(GrandFather):
money = 1000
face = “帥氣的一張臉”

class Me(Father):
pass
myself = Me()
print(myself.money)
print(myself.face)
多繼承案例:

多繼承帶來(lái)的BUG-菱形繼承

class Human():
def say(self):
print(“人類向天怒吼:人定勝天!”)
class Man(Human):
def say(self):
super().say() #改為Human.say(1)
print(“男人向天怒吼:女孩的心思我不懂~”)
class WoMan(Human):
def say(self):
super().say() #改為Human.say(1)
print(“女人向天怒吼:男人你們能不能別猜我心思了”)
class Child(Man,WoMan):
def say(self):
super().say() #改為Woman.say(1),Man.say(0)
print(“小孩向天怒吼:哇哇哇~”)

child = Child()
child.say()
print(Child.mro())

結(jié)果為
人類向天怒吼:人定勝天!
女人向天怒吼:男人你們能不能別猜我心思了
男人向天怒吼:女孩的心思我不懂~
小孩向天怒吼:哇哇哇~

若修改結(jié)果為
人類向天怒吼:人定勝天!
人類向天怒吼:人定勝天!
女人向天怒吼:男人你們能不能別猜我心思了
男人向天怒吼:女孩的心思我不懂~
小孩向天怒吼:哇哇哇~

菱形bug:如果這里super().say()改為向父類調(diào)用,就會(huì)導(dǎo)致某個(gè)方法在繼承中被多次調(diào)用!
菱形繼承的bug解決:MRO列表和super 類

解決辦法:將菱形繼承改變成類似于單繼承的方式

當(dāng)我們定義一個(gè)菱形繼承關(guān)系的時(shí)候,程序會(huì)自動(dòng)生成一個(gè)新的MRO列表。

MRO列表: Method Realtion Order 方法關(guān)系列表。

MRO列表的生成的原則:1.子類永遠(yuǎn)在父類的前面 2.同一等級(jí)的類,按照子類中的繼承順序擺放

super()調(diào)用的時(shí)候,不是查找父類, 實(shí)際上super是查找MRO列表的上一個(gè)類

super()調(diào)用對(duì)象方法的時(shí)候不需要傳入對(duì)象,自動(dòng)傳入

如果需要查看mro列表,可以使用類名.mro() 方法 或用類名. mro 查看
多態(tài)
定義:不同的子類對(duì)象調(diào)用相同的父類方法,產(chǎn)生不同的執(zhí)行結(jié)果
多態(tài)指的是一類事物有多種形態(tài),(一個(gè)抽象類有多個(gè)子類,因而多態(tài)的概念依賴于繼承)
多態(tài)是調(diào)用方法的技巧,不會(huì)影響到類的內(nèi)部設(shè)計(jì)
關(guān)鍵點(diǎn):繼承 改寫(重載)

定義狗類

class Dog:
def work(self):
print(“狗是人類的好朋友”)

定義警犬類

class ArmyDog(Dog):
def work(self):
print(‘追擊敵人’)

定義緝毒犬類

class DrugDog(Dog):
def work(self):
print(‘追查毒品’)

定義二哈類

class HaDog(Dog):
def work(self):
print(“歡樂的破壞”)
#定義人類
class Person:
def with_dog(self, dog): # 只要能接收父類對(duì)象,就能接收子類對(duì)象
dog.work() # 只要父類對(duì)象能工作,子類對(duì)象就能工作。并且不同子類會(huì)產(chǎn)生不同的執(zhí)行效果。
p = Person()
p.with_dog(ArmyDog())
p.with_dog(DrugDog())
p.with_dog(HaDog())

面向?qū)ο蟪S煤瘮?shù)
issubclass()
作用:檢測(cè)一個(gè)類是否是另一個(gè)類的子類
格式:issubclass(子類,父類)
返回值:布爾值
注意事項(xiàng):只要存在于繼承關(guān)系中 就成立

class Father():
pass
class Son(Father):
pass
res = issubclass(Son,Father)
print(res)

isinstance()
作用:檢測(cè)一個(gè)對(duì)象是否是指定類的實(shí)例
格式:isinstance(對(duì)象,類)
返回值:布爾值

res = isinstance([1,2,3,4,5],tuple)
print(res)

class Son():
pass
wsc = Son()
res = isinstance(wsc,Son)
print(res)

hasattr()
作用:檢測(cè)類/對(duì)象是否包含指定名稱的成員
格式:hasattr(對(duì)象,‘成員名稱’)
返回值:布爾值
注意:可以檢測(cè)類也可以檢測(cè)對(duì)象,只要可以訪問就算存在

class ShengWu:
life = “活著”
class Human(ShengWu):
name = “hello”
def move(self):
print(“yidong”)
wenguang = Human()
res = hasattr(wenguang,“l(fā)ife”)
print(res)

getattr()
作用:獲取類.對(duì)象的成員值
格式:getattr(對(duì)象,‘成員名稱’,默認(rèn)值)
返回值:不確定

class ShengWu:
life = “活著”
class Human(ShengWu):
name = “hello”
def move(self):
print(“yidong”)
wenguang = Human()
res = getattr(wenguang,“l(fā)i”,“nihao”)
print(res)

setattr()
作用:設(shè)置類/對(duì)象的成員屬性值
格式:setattr(對(duì)象,‘成員名稱’,設(shè)置的值)
返回值:無(wú)

class Human():
__name = “hello”
def move(self):
print(“yidong”)

wenguang = Human()
print(wenguang. dict )
setattr(wenguang,“name”,“alice”)
print(wenguang. dict )
setattr(wenguang,“name”,“tommy”)
print(wenguang. dict )

delattr()
作用:刪除類/對(duì)象的成員
格式:delattr(對(duì)象,‘成員名稱’)
返回值:無(wú)

print(Human. dict )
delattr(Human,“name”)
print(Human. dict )

dir()
作用:獲取對(duì)象可以訪問的所有成員的列表
格式:dir(對(duì)象)
返回值:對(duì)象可以訪問的所有成員的列表

print(dir(wenguang))
結(jié)果為:
{‘ module ’: ‘ main ’, ‘_Human__name’: ‘hello’, ‘move’: , ‘ dict ’: dict’ of ‘Human’ objects>, ‘ weakref ’: weakref’ of ‘Human’ objects>, ‘ doc ’: None}

property() 后面講
作用:設(shè)置描述符操作的函數(shù)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日韩国产无矿砖一线二线图 | 99久久精品久久久久久清纯 | 精品一区二区高清在线观看 | 激情五月激情综合网 | 国产免费一区二区三区免费视频 | 一级做a免费视频 | 欧美韩国日本一区 | 欧美在线观看a | 免费黄色福利 | 91最新免费观看在线 | 国产精品自线在线播放 | 日本三级韩国三级香港三级 | 欧美一级毛片不卡免费观看 | 婷婷激情五月综合 | 日韩综合色 | 国产精品视频免费观看 | 日韩 欧美 中文 | 99久久99热久久精品免费看 | 欧美一区二区三区久久久 | 波多野一区| 久草在线在线精品观看 | 国产在线综合一区二区三区 | 九九热视频免费 | 国产精品福利在线观看 | 偷拍自拍网站 | 欧美视频在线免费看 | 久久久免费视频观看 | 久久综合欧美 | 国产91久久精品一区二区 | 久久久精品视频免费看 | 日本一区二区在线视频 | 欧美日韩视频 | 91原创视频| 欧美日韩欧美日韩 | 五月天在线影院 | 久久久久国产精品 | 看了让人下面流水的视频 | 黄色网址在线免费播放 | 深夜久久 | 亚洲高清国产拍精品影院 | 国产高清视频a在线大全 |