最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

0717-面向?qū)ο?1)

2023-07-17 23:28 作者:GHWNM  | 我要投稿

先宏觀,再微觀

函數(shù)化編程,這個(gè)點(diǎn)不懂,跳過他,只需要知道這個(gè)函數(shù)是干啥的,傳參和返回是啥就OK

體現(xiàn)過程,隱藏實(shí)現(xiàn)


為什么要叫面向?qū)ο?,不是先寫類嗎?/p>

是因?yàn)橹攸c(diǎn)是類里面的那個(gè)具體對象,用的是對象不是類


MVC架構(gòu):

識別對象(找人)? 分配職責(zé)(干活)? 建立交互(傳遞)

V(View)輸入? ? ? ? ? C(Controller)計(jì)算? M(Model)封裝24


class View:

def __init__(self):

self.controller = Controller()


def func01(self):

# 跨類調(diào)用語法1:希望每次創(chuàng)建一個(gè)新對象

model = Model()

model.data = input()


def func02(self):

# 跨類調(diào)用語法2:希望每次調(diào)用一個(gè)舊對象

self.controller


class Model:

def __init__(self, data=""):

self.data = data


class Controller:

def func03(self):

pass


Model可以理解為數(shù)據(jù)庫里面那個(gè)列名,是一行數(shù)據(jù)的抽象,一種模板

而數(shù)據(jù)庫是整體的,二維的數(shù)據(jù)


這玩意最開始感覺挺復(fù)雜,覺得沒必要

然后看了下以前的*山,再實(shí)際用了下發(fā)現(xiàn),欸,這玩意,行

以及pycharm會(huì)自動(dòng)給你補(bǔ)類型標(biāo)注,太棒了


私有化: 前面加倆_,就是類內(nèi)可以正常調(diào)用訪問,但是類外不行

# 如果只寫一個(gè),在類外調(diào)用的時(shí)候也不會(huì)顯示,但是如果你硬寫是可以調(diào)用的,但是這個(gè)就不能導(dǎo)入了

私有化有什么用?

便于程序維護(hù),保證類的獨(dú)立性,方便開發(fā)團(tuán)隊(duì)成員開發(fā),相當(dāng)于給你套了個(gè)保護(hù)層

擴(kuò)展: 其實(shí)雙下劃線也可以用的,就是a._View__ controller

后置單下劃線: 防止與python關(guān)鍵字沖突

以及__xxx__,這樣的解釋是用戶名字空間的魔法對象或?qū)傩裕热鏮_init__,不要自己發(fā)明這樣的名字!

common 公用的,中間的


子類(派生類),父類(基類,超類)

比如有倆類,學(xué)生類,老師類,他倆都能說話,而且都一樣,就可以把def say提煉出來

然后定義一個(gè)人 類,這里面把def say塞進(jìn)去,然后原來的class teacher,class student后面就可以加上個(gè)括號,里面塞要繼承的父類

就是class teacher(person),然后在字類里面就可以self.say,就是直接調(diào)用父類里面的函數(shù)

isinstance(對象,類型),可以判斷【具體對象】是不是一種類型

issubclass(類型,類型),可以判斷【具體對象】是不是另一種類型,子類是不是父類


還可以這樣寫,更通俗

tpye(t) == Teacher

就是【老師對象 的 類型】 是不是 【Teacher類型】 True

# 這里補(bǔ)充下,type(t)出來的類型是一種專門的類型,不是string 是tpye類,我也不知道怎么想的,反正得知道他不是字符串,不能直接操作:(

以及type直接就看你是不是,不管你包不包含

以及還有一句話 【老師 不是 人, 但 老師 是 一種 人】

這是一種包含,歸屬關(guān)系,別的編程語言叫父子兼容性判斷,字類 是 一種 父類

這里很重要,可以理解為 子是一種小圈圈,父是一種大圈圈

父類相對于子類更加抽象,范圍更加寬廣

子類沒有構(gòu)造函數(shù),自動(dòng)繼承父類構(gòu)造函數(shù)

子類有構(gòu)造函數(shù),覆蓋父類構(gòu)造函數(shù)

子類里調(diào)函數(shù),遵循就近原則

還能手動(dòng)在子類構(gòu)造函數(shù)里用super().__init__(xxx, xxx)

super函數(shù)只能找上一級父類的函數(shù),

例如,有如下的類繼承關(guān)系:Grandparent -> Parent -> Child。

當(dāng)子類Child調(diào)用super()函數(shù)時(shí),它只會(huì)調(diào)用直接父類Parent的方法,而不會(huì)調(diào)用更上一級的父類Grandparent的方法。

如果想要用二級父類的函數(shù),可以直接用父類名.方法來實(shí)現(xiàn)

以及父類必須是在前面,你不能把子類寫前面,因?yàn)樵诶^承的時(shí)候就要使用父類

【擴(kuò)展:單繼承-->只有一個(gè)父類(Java, C#) 多繼承-->父類有多個(gè)(C++,Python)

單繼承,多實(shí)現(xiàn),有函數(shù),但是沒有函數(shù)具體的代碼,接口,還有個(gè)類是object類,一個(gè)類直接或間接繼承了object類,簡稱:萬物起源(你祖宗】


重寫

定義:在子類定義與父類相同的方法 改變父類的不適用行為,體現(xiàn)子類的個(gè)性

就是重新寫,重新改變父類的函數(shù),所以名字必須一樣

以及如果你重寫的方法是一個(gè)魔法屬性,比如__int__,__str__等,那么在調(diào)用那個(gè)原來的int()或者str()時(shí)也會(huì)調(diào)用你寫的__int__和__str__

以及重載在python中實(shí)際上是不存在的,比如from xxxxA import *; from xxxxB import *; 這倆都有個(gè)test()函數(shù)

在別的語言(C++),反正在python里調(diào)test()的話是調(diào)的B里面的,因?yàn)楸恢貙懥?覆蓋)

重載的話就是,根據(jù)形參的類型等等的不同來判斷你使用哪個(gè)方法,但是python不能


魔法屬性之repr

# 將字符串作為python指令運(yùn)行!

print(eval("1+1"))

print(eval(input()))

# 這個(gè)東西價(jià)值很大,比如病毒,正常程序會(huì)進(jìn)行原碼級別的審核

# 但這個(gè)里面填一個(gè)動(dòng)態(tài)的字符串,到底執(zhí)行的什么你判定不了

# 別的語言,這個(gè)叫反射技術(shù),而且這個(gè)里面允許變量!

# eval和repr鏈接一下,能達(dá)成什么效果?


實(shí)際上,python里基本,底層的構(gòu)造就是萬物皆對象

+,-,是啥,是對象,list是啥,是對象,可以把任何東西都看作一個(gè)對象

(這是什么?列克星敦?是對象!)?


多繼承(擴(kuò)展)

如果孫子同時(shí)繼承了倆兒子類,那么在用super調(diào)用是會(huì)調(diào)用第一個(gè)父類,son1對吧

那如果son1也調(diào)super會(huì)是哪個(gè)?你以為是調(diào)parent,父親類嗎

不,實(shí)際上它是會(huì)調(diào)son2

為什么呢,我也不知道(

但是他是根據(jù)一個(gè)叫MRO的順序表來決定super調(diào)哪個(gè)的,這個(gè)MRO是根據(jù)python解釋器里一種自帶的算法'C3'來決定的

# 可以用類名.__mro__來看這個(gè)類的MRO是什么

就是找當(dāng)前類,然后調(diào)這個(gè)類的下一個(gè)(在MRO里)


import部分?jǐn)U展

以及可以我用個(gè)只有變量的程序,然后用其他程序?qū)脒@個(gè)程序,在里面改這個(gè)程序的變量,是可以改的

但是不能from xxx import 變量名,因?yàn)檫@樣指向的是這個(gè)變量名的值,改了之后只能在這個(gè)程序中生效

要改得import xxx,然后再xxx.變量名 = True

但是如果是列表的話,直接from導(dǎo)入,改的時(shí)候用append是可以改的,但是直接=就不行

保險(xiǎn)起見,還是用import導(dǎo)入再用.來修改吧:D


0717-面向?qū)ο?1)的評論 (共 條)

分享到微博請遵守國家法律
西丰县| 固始县| 永州市| 杭州市| 龙海市| 六安市| 平阴县| 绍兴县| 通河县| 昔阳县| 南昌县| 吉林市| 云阳县| 赣州市| 庄河市| 怀远县| 托克托县| 芦溪县| 新巴尔虎左旗| 青海省| 静宁县| 彭州市| 来安县| 广宗县| 乌审旗| 杭锦后旗| 乌拉特后旗| 富宁县| 湖北省| 磴口县| 长丰县| 石河子市| 禹城市| 斗六市| 来宾市| 辉南县| 绥中县| 牙克石市| 沁水县| 曲靖市| 泸定县|