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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

python

从零开始学python项目_从零开始可以这样学python

發(fā)布時(shí)間:2023/12/10 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始学python项目_从零开始可以这样学python 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從零開(kāi)始學(xué)python第二章

面向?qū)ο蟮谝黄?/p>

太原理工大學(xué)機(jī)器人團(tuán)隊(duì)20日打卡day9

? 當(dāng)我們討論python時(shí)不得不討論到面向?qū)ο?#xff0c;而我身為機(jī)器人團(tuán)隊(duì)的一名成員,在平時(shí)設(shè)計(jì)的時(shí)候可以通過(guò)把機(jī)器人的各個(gè)部分設(shè)計(jì)成不同的對(duì)象以此來(lái)簡(jiǎn)化重復(fù)的函數(shù)引用。并且python作為一種面向?qū)ο蟮恼Z(yǔ)言,如果不了解和使用面向?qū)ο?#xff0c;呢么python就是學(xué)習(xí)的不完整的。

1、面向?qū)ο?/p>

2、初始化方法

? 面向?qū)ο蟮幕緝?nèi)容也是十分少和簡(jiǎn)單的,但是并不能說(shuō)這種方法就是簡(jiǎn)單無(wú)意義的。在開(kāi)發(fā)大型項(xiàng)目的時(shí)候,顯然的是這種方法能節(jié)約大量時(shí)間并使代碼簡(jiǎn)單易懂,使編程更像是一種游戲。

1、面向?qū)ο?/p>

面向?qū)ο缶幊?—— Object Oriented Programming 簡(jiǎn)寫(xiě) OOP

目標(biāo)

1.1面向?qū)ο蟮幕靖拍?/p>

我們之前學(xué)習(xí)的編程方式就是 面向過(guò)程 的

面相過(guò)程 和 面相對(duì)象,是兩種不同的 編程方式

對(duì)比 面向過(guò)程 的特點(diǎn),可以更好地了解什么是 面向?qū)ο?/p>

1.2面向過(guò)程和面向?qū)ο蟮幕靖拍?/p>

1)面向過(guò)程——怎么做

把完成某一個(gè)需求的 所有步驟 從頭到尾 逐步實(shí)現(xiàn)

根據(jù)開(kāi)發(fā)需求,將某些 功能獨(dú)立 的代碼 封裝 成一個(gè)又一個(gè) 函數(shù)

最后完成的代碼,就是順序地調(diào)用 不同的函數(shù)

特點(diǎn)

注重 步驟與過(guò)程,不注重職責(zé)分工

如果需求復(fù)雜,代碼會(huì)變得很復(fù)雜

開(kāi)發(fā)復(fù)雜項(xiàng)目,沒(méi)有固定的套路,開(kāi)發(fā)難度很大!

2)面向過(guò)程——誰(shuí)來(lái)做

相比較函數(shù),面向?qū)ο?是 更大 的 封裝,根據(jù) 職責(zé) 在 一個(gè)對(duì)象中 封裝 多個(gè)方法

在完成某一個(gè)需求前,首先確定 職責(zé) —— 要做的事情(方法)

根據(jù) 職責(zé) 確定不同的 對(duì)象,在 對(duì)象 內(nèi)部封裝不同的 方法(多個(gè))

最后完成的代碼,就是順序地讓 不同的對(duì)象 調(diào)用 不同的方法

特點(diǎn)

注重 對(duì)象和職責(zé),不同的對(duì)象承擔(dān)不同的職責(zé)

更加適合應(yīng)對(duì)復(fù)雜的需求變化,是專門(mén)應(yīng)對(duì)復(fù)雜項(xiàng)目開(kāi)發(fā),提供的固定套路

需要在面向過(guò)程基礎(chǔ)上,再學(xué)習(xí)一些面向?qū)ο蟮恼Z(yǔ)法

1.3類(lèi)和對(duì)象

1.31類(lèi)和對(duì)象基本概念

類(lèi) 是對(duì)一群具有 相同 特征 或者 行為 的事物的一個(gè)統(tǒng)稱,是抽象的,不能直接使用

特征被稱為 屬性

行為 被稱為 方法

類(lèi) 就相當(dāng)于制造飛機(jī)時(shí)的圖紙,是一個(gè) 模板,是 負(fù)責(zé)創(chuàng)建對(duì)象的

1.32對(duì)象

對(duì)象是由類(lèi)創(chuàng)建出來(lái)的一個(gè)具體存在,可以直接使用

由 哪一個(gè)類(lèi) 創(chuàng)建出來(lái)的 對(duì)象,就擁有在 哪一個(gè)類(lèi) 中定義的:

屬性

方法

對(duì)象 就相當(dāng)于用 圖紙 制造 的飛機(jī)

1.4類(lèi)和對(duì)象的關(guān)系

類(lèi)是模板,對(duì)象 是根據(jù) 類(lèi) 這個(gè)模板創(chuàng)建出來(lái)的,應(yīng)該 先有類(lèi),再有對(duì)象

類(lèi) 只有一個(gè),而 對(duì)象 可以有很多個(gè)

不同的對(duì)象 之間 屬性 可能會(huì)各不相同

類(lèi) 中定義了什么 屬性和方法,對(duì)象 中就有什么屬性和方法,不可能多,也不可能少

1.5類(lèi)的設(shè)計(jì)

在使用面相對(duì)象開(kāi)發(fā)前,應(yīng)該首先分析需求,確定一下,程序中需要包含哪些類(lèi)!

在程序開(kāi)發(fā)中,要設(shè)計(jì)一個(gè)類(lèi),通常需要滿足一下三個(gè)要素:

類(lèi)名 這類(lèi)事物的名字,滿足大駝峰命名法

屬性 這類(lèi)事物具有什么樣的特征

方法 這類(lèi)事物具有什么樣的行為

大駝峰命名法

每一個(gè)單詞的首字母大寫(xiě)

單詞與單詞之間沒(méi)有下劃線

類(lèi)名的確定

名詞提煉法 分析 整個(gè)業(yè)務(wù)流程,出現(xiàn)的 名詞,通常就是找到的類(lèi)

屬性和方法的確定

對(duì) 對(duì)象的特征描述,通常可以定義成 屬性

對(duì)象具有的行為(動(dòng)詞),通常可以定義成 方法

1.6面向?qū)ο蠡A(chǔ)語(yǔ)法

1.61定義只包含方法的類(lèi)

在 python 中要定義一個(gè)只包含方法的類(lèi),語(yǔ)法格式如下:

class 類(lèi)名:

def 方法1(self, 參數(shù)列表):

pass

def 方法2(self, 參數(shù)列表):

pass

1.62方法中的self函數(shù)

案例改造——給對(duì)象增加屬性

在 Python 中,要 給對(duì)象設(shè)置屬性,非常的容易,但是不推薦使用

因?yàn)?#xff1a;對(duì)象屬性的封裝應(yīng)該封裝在類(lèi)的內(nèi)部

只需要在 類(lèi)的外部的代碼 中直接通過(guò) . 設(shè)置一個(gè)屬性即可

tom.name = "Tom"

...

lazy_cat.name = "大懶貓"

1.63使用self在方法內(nèi)部輸出每一只貓的名字

在類(lèi)封裝的方法內(nèi)部,self.就表示當(dāng)前調(diào)用方法的對(duì)象自己

調(diào)用方法時(shí),程序員不需要傳遞self.參數(shù)

在方法內(nèi)部

可以通過(guò)self.訪問(wèn)對(duì)象的屬性

也可以通過(guò)self.調(diào)用其他的對(duì)象方法

改造代碼如下

class Cat:

def eat(self):

print("%s 愛(ài)吃魚(yú)" % self.name)

tom = Cat()

tom.name = "Tom"

tom.eat()

lazy_cat = Cat()

lazy_cat.name = "大懶貓"

lazy_cat.eat()

在 類(lèi)的外部,通過(guò) 變量名. 訪問(wèn)對(duì)象的 屬性和方法

在 類(lèi)封裝的方法中,通過(guò) self. 訪問(wèn)對(duì)象的 屬性和方法

2、初始化方法

2.1之前代碼存在的問(wèn)題——在類(lèi)的外部給類(lèi)增加屬性

將案例代碼進(jìn)行調(diào)整,先調(diào)用方法 再設(shè)置屬性,觀察一下執(zhí)行效果

tom = Cat()

tom.drink()

tom.eat()

tom.name = "Tom"

print(tom)

程序執(zhí)行報(bào)錯(cuò)如下

AttributeError: 'Cat' object has no attribute 'name'

屬性錯(cuò)誤:'Cat' 對(duì)象沒(méi)有 'name' 屬性

Notes:

在日常開(kāi)發(fā)中,不推薦在 類(lèi)的外部 給對(duì)象增加屬性

如果在運(yùn)行時(shí),沒(méi)有找到屬性,程序會(huì)報(bào)錯(cuò)

對(duì)象應(yīng)該包含有哪些屬性,應(yīng)該 封裝在類(lèi)的內(nèi)部

2.2初始化的方法

當(dāng)使用 類(lèi)名() 創(chuàng)建對(duì)象時(shí),會(huì) 自動(dòng) 執(zhí)行以下操作:

象在內(nèi)存中 分配空間 —— 創(chuàng)建對(duì)象

為對(duì)象的屬性 設(shè)置初始值 —— 初始化方法( init )

這個(gè) 初始化方法 就是 init 方法, init 是對(duì)象的內(nèi)置方法

init 方法是 專門(mén) 用來(lái)定義一個(gè)類(lèi) 具有哪些屬性的方法!

在 Cat 中增加 init 方法,驗(yàn)證該方法在創(chuàng)建對(duì)象時(shí)會(huì)被自動(dòng)調(diào)用

class Cat:

"""這是一個(gè)貓類(lèi)"""

def __init__(self):

print("初始化方法")

2.3在初始化方法內(nèi)部定義屬性

在 init 方法內(nèi)部使用 self.屬性名 = 屬性的初始值 就可以 定義屬性

定義屬性之后,再使用 Cat 類(lèi)創(chuàng)建的對(duì)象,都會(huì)擁有該屬性

class Cat:

def __init__(self):

print("這是一個(gè)初始化方法")

# 定義用 Cat 類(lèi)創(chuàng)建的貓對(duì)象都有一個(gè) name 的屬性

self.name = "Tom"

def eat(self):

print("%s 愛(ài)吃魚(yú)" % self.name)

# 使用類(lèi)名()創(chuàng)建對(duì)象的時(shí)候,會(huì)自動(dòng)調(diào)用初始化方法 __init__

tom = Cat()

tom.eat()

2.4改造初始化方法——初始化的同時(shí)設(shè)置初始值

在開(kāi)發(fā)中,如果希望在 創(chuàng)建對(duì)象的同時(shí),就設(shè)置對(duì)象的屬性,可以對(duì) init 方法進(jìn)行 改造

把希望設(shè)置的屬性值,定義成 init 方法的參數(shù)

在方法內(nèi)部使用 self.屬性 = 形參 接收外部傳遞的參數(shù)

在創(chuàng)建對(duì)象時(shí),使用 類(lèi)名(屬性1, 屬性2…) 調(diào)用

class Cat:

def __init__(self, name):

print("初始化方法 %s" % name)

self.name = name

...

tom = Cat("Tom")

...

lazy_cat = Cat("大懶貓")

總結(jié)

以上是生活随笔為你收集整理的从零开始学python项目_从零开始可以这样学python的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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