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

歡迎訪問 生活随笔!

生活随笔

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

python

python(22)--面向对象1-封装

發(fā)布時(shí)間:2023/12/13 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python(22)--面向对象1-封装 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python面向?qū)ο?/h3>
  • 1面向過程/面向?qū)ο?/li>
  • 2面向?qū)ο蠛诵母拍?類
  • 3類的設(shè)計(jì)
    • 3.1類三要素-類名、屬性、方法
    • 3.2面向?qū)ο蠡A(chǔ)語法
      • 3.2.1查看對(duì)象的常用方法
      • 3.2.2類定義
      • 3.2.3創(chuàng)建類對(duì)象
      • 3.2.4__init__()方法
      • 3.2.5 self參數(shù)
      • 3.2.6類內(nèi)置方法和屬性
        • _del_()方法--銷毀對(duì)象
        • _str_()方法--定制化輸出對(duì)象
  • 4面向?qū)ο蟮姆庋b
    • 4.1 身份運(yùn)算符號(hào) is、is not
    • 4.2 私有屬性和私有方法

本系列博文來自學(xué)習(xí)《Python基礎(chǔ)視頻教程》筆記整理,視屏教程連接地址:http://yun.itheima.com/course/273.html

1面向過程/面向?qū)ο?/h1>

過程和函數(shù):
過程是一個(gè)早期的編程概念,類似于函數(shù),只能執(zhí)行,沒有返回值。
函數(shù)不僅能執(zhí)行,還可以有返回值。

面向過程面向?qū)ο?/strong>:
面向過程:強(qiáng)調(diào)怎么做,把完成一個(gè)需求的步驟依次完成,根據(jù)開發(fā)需求,將獨(dú)立功能封裝成一個(gè)又一個(gè)的函數(shù)。
在開發(fā)復(fù)雜項(xiàng)目,沒有固定的功能,開發(fā)難度大

面向?qū)ο?#xff1a;強(qiáng)調(diào)誰來做。根據(jù)職責(zé)在一個(gè)對(duì)象中封裝更多的方法.
在完成一個(gè)需求時(shí),首先確定職責(zé),要明確該職責(zé)的對(duì)象,最后完成需求只要調(diào)用對(duì)應(yīng)的對(duì)象就能完成該功能。

面向?qū)ο缶幊痰睦莹C植物大戰(zhàn)僵尸:
向日葵:產(chǎn)陽(yáng)光,搖晃,生命值,主程序要做的就是把向日葵往地上一擺就行了(哈哈哈太搞笑了)
僵尸:啃植物,移動(dòng)

2面向?qū)ο蠛诵母拍?類

: 一群具有相同特征或者行為的事物的統(tǒng)稱,是抽象的,不能直接使用。類的職責(zé)很單一就是為了創(chuàng)建對(duì)象用的。

特征被稱為屬性,
行為被稱為方法。

(類:制造飛機(jī)使用的圖紙,飛機(jī)具有什么特征,飛機(jī)有什么行為。)

對(duì)象:是由類創(chuàng)建的一個(gè)具體存在,可以直接使用。在程序開發(fā)時(shí)應(yīng)該先有類。

(有了圖紙,就可以造真的飛機(jī)。)

類和對(duì)象的關(guān)系:類只有一個(gè),對(duì)象可以有很多個(gè),不同對(duì)象之間的屬性可能不同,(同一張圖紙?jiān)斐鰜淼娘w機(jī)可能顏色各不相同。)

類中的屬性和方法對(duì)象中也會(huì)有,不會(huì)多也不會(huì)少。

3類的設(shè)計(jì)

3.1類三要素-類名、屬性、方法

面向?qū)ο蟮拈_發(fā)之前,應(yīng)該進(jìn)行需求分析,確定一下,程序中要包含什么類。

設(shè)計(jì)類時(shí)要滿足的三個(gè)要素
類名: 大駝峰命名,名詞提煉法,
屬性: 類別的特征
方法: 動(dòng)詞提煉法

例子:
小明今年18歲,身高175,今天早上去跑步,然后去吃飯
小美今年17歲,身高1.65,小美不跑步,小妹喜歡吃東西。

定義:人類:三個(gè)屬性名字身高年齡,三個(gè)方法。

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

對(duì)象無處不在,變量,數(shù)據(jù),函數(shù)都是對(duì)象。

3.2.1查看對(duì)象的常用方法

1.ipython中使用.+tab鍵來確定方法
2.dir(對(duì)象)查看的所有方法,帶‘__’是內(nèi)置方法和屬性
3.__doc__可以查看函數(shù)文檔

(ipython 中定義函數(shù),兩個(gè)回車之后結(jié)束定義)

3.2.2類定義

定義一個(gè)簡(jiǎn)單的類(在類中封裝方法)

Class 類名:Def 方法名(self,參數(shù)列表)#第一個(gè)參數(shù)一定要是self,如果沒有其他參數(shù)也要寫一個(gè)self.

3.2.3創(chuàng)建類對(duì)象

接收對(duì)象的變量同樣是對(duì)對(duì)象的引用,Tom接受貓類對(duì)象,為貓對(duì)象分配空間,讓tom 指向這個(gè)對(duì)象

變量名=類名()

1.注:用print輸出對(duì)象變量,會(huì)輸出這個(gè)變量引用的對(duì)象 是由哪一個(gè)類創(chuàng)建的對(duì)象,以及在內(nèi)存中的地址(以16進(jìn)制的形式表示)

2.使用同一個(gè)類創(chuàng)建的不同的對(duì)象 指向的內(nèi)存地址不同。就是說,引用不同,對(duì)象不同。

3.在類的外部給對(duì)象增加屬性(這種方式很簡(jiǎn)單,但是不推薦使用)

對(duì)象.屬性名=“屬性值”



在類的外部給對(duì)象增加屬性會(huì)造成的隱患:運(yùn)行時(shí)找到屬性可以正常執(zhí)行,找不到屬性就會(huì)報(bào)錯(cuò)。所以,類的屬性應(yīng)該封裝在類定義中。

AttributeError: ‘Cat’ object has no attribute ‘name’

3.2.4__init__()方法

用類名+()創(chuàng)建對(duì)象時(shí)會(huì)做兩件事:1.自動(dòng)為對(duì)象分配內(nèi)存空間;2.調(diào)用__init__()方法為對(duì)象的屬性設(shè)置初始值(初始化方法)

對(duì)象的初始化方法__init__()專門用來定義類的屬性。在初始化方法內(nèi)部定義屬性。在初始化方法__init__()中添加形參,在創(chuàng)建對(duì)象時(shí),將屬性作為實(shí)參傳入。不同的對(duì)象就有不同的屬性值。

self.屬性名=屬性值

3.2.5 self參數(shù)

self 保存著對(duì)象的引用。哪一個(gè)對(duì)象調(diào)用的方法,self 就是該對(duì)象的引用。利用self在 類封裝的方法 中輸出對(duì)象屬性。self .屬性名 來訪問對(duì)象的屬性。

對(duì)象內(nèi)部屬性和方法的調(diào)用都是用 self.屬性 或者 self.方法 來實(shí)現(xiàn)。

3.2.6類內(nèi)置方法和屬性

一般不需要認(rèn)為去編寫,如果重寫了該方法就能實(shí)現(xiàn)一些神奇的功能。
在python中方法名如果是__xxxx__()的,那么就有特殊的功能,也叫做“魔法”方法。

del()方法–銷毀對(duì)象

一個(gè)對(duì)象要被在內(nèi)存中銷毀,系統(tǒng)會(huì)自動(dòng)調(diào)用對(duì)象的_del_()方法。生命周期:類名創(chuàng)建對(duì)象- del 方法調(diào)用結(jié)束

str()方法–定制化輸出對(duì)象

print輸出對(duì)象變量,默認(rèn)情況下是輸出變量 引用的對(duì)象 是由哪一個(gè)類創(chuàng)建的,以及在內(nèi)存中的地址。但是,希望輸出自定義的內(nèi)容,就可以調(diào)用_str_()方法。

def __str__(self):#必須返回一個(gè)字符串return "我是小貓[%s]" % self.name

輸出對(duì)象變量print(tom)時(shí),就不是輸出默認(rèn)內(nèi)容,而寫在_str_方法中的內(nèi)容。

當(dāng)使用print輸出對(duì)象的時(shí)候,只要自己定義了__str__(self)方法,那么就會(huì)打印從在這個(gè)方法中return的數(shù)據(jù)

參考資料:https://www.runoob.com/note/41154

4面向?qū)ο蟮姆庋b

封裝是面向?qū)ο缶幊痰囊淮筇攸c(diǎn),面向?qū)ο缶幊痰牡谝徊建C將屬性和方法封裝到一個(gè)抽象的類中,外界使用類創(chuàng)建對(duì)象時(shí),讓對(duì)象 調(diào)用類的方法。所有方法的細(xì)節(jié),都被封裝在類內(nèi)部。

小明愛跑步:體重75kg,跑步會(huì)減肥0.5Kg,吃東西會(huì)增重1kg.

class Person:def __init__(self,new_name,new_weight):self.name=new_nameself.weight=new_weightdef eat(self):self.weight+=1def run(self):self.weight-=0.5def __str__(self):return "%s 重 %.2f kg" % (self.name,self.weight) xiaoming=Person("xiaoming",65) #這里定義的類型決定了,該屬性能夠進(jìn)行什么操作。 xiaoming.eat() xiaoming.run() print(xiaoming)

同一個(gè)類創(chuàng)建的不同對(duì)象的屬性是互補(bǔ)干擾的。

一個(gè)對(duì)象的屬性可以是另一個(gè)類創(chuàng)建的對(duì)象,被使用的類應(yīng)該先開發(fā)。

4.1 身份運(yùn)算符號(hào) is、is not

身份運(yùn)算符號(hào) is、is not,比較兩個(gè)對(duì)象的內(nèi)存地址是否一致。
比較運(yùn)算符==判斷兩個(gè)變量的值是否相等。
在Python中對(duì)None進(jìn)行比較時(shí)建議使用is進(jìn)行比較。

4.2 私有屬性和私有方法

在實(shí)際應(yīng)用中對(duì)象的某些屬性或者方法只希望在對(duì)象的內(nèi)部使用,而不希望外部訪問。
私用屬性: 對(duì)象不希望公開的屬性
私有方法: 對(duì)象不希望公開的方法

定義方式:在定義屬性或者方法時(shí),在屬性或者方法名下面 增加 兩個(gè)下劃線,定義的就是私有屬性或者方法。實(shí)際是偽私有屬性 和 偽私有方法,Python解釋器會(huì)給加下劃線的屬性名和方法名做特殊處理,使用對(duì)應(yīng)的屬性名依舊可以訪問。

_類名__屬性名

在對(duì)象的方法內(nèi)部,可以訪問私有屬性,但是在外界,不能訪問私有屬性(對(duì)象名.屬性名)或者私有方法(對(duì)象名.方法名)

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的python(22)--面向对象1-封装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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