日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

下面從這幾個方面來詳細詳解Python/ target=_blank class=infotextkey>Python面向對象:

 

  • 初識對象
  • 成員方法
  • 類和對象
  • 構造方法
  • 其它內置方法
  • 封裝
  • 繼承
  • 類型注解
  • 多態
  • 綜合案例
一、初識對象生活中數據的組織

 

學校開學,要求學生填寫自己的基礎信息,一人發一張白紙,讓學生自己填。


 

改為登記表,打印出來讓學生自行填寫:


 

程序中數據的組織

在程序中簡單使用變量來記錄學生信息


 

使用對象組織數據

在程序中是可以做到和生活中那樣,設計表格、生產表格、填寫表格的組織形式的。

1. 在程序中設計表格,我們稱之為:設計類(class)

2. 在程序中打印生產表格,我們稱之為:創建對象


 

3. 在程序中填寫表格,我們稱之為:對象屬性賦值


 

二、成員方法類的定義和使用

在上一節中,我們簡單了解到可以使用類去封裝屬性,并基于類創建出一個個的對象來使用。現在我們來看看類的使用語法:


 


 


 

成員變量和成員方法

那么,什么是類的行為(方法)呢?


 

可以看出,類中:

 

  • 不僅可以定義屬性用來記錄數據
  • 也可以定義函數,用來記錄行為

 

其中:

 

  • 類中定義的屬性(變量),我們稱之為:成員變量
  • 類中定義的行為(函數),我們稱之為:成員方法
成員方法的定義語法

 

在類中定義成員方法和定義函數基本一致,但仍有細微區別:


 

可以看到,在方法定義的參數列表中,有一個:self關鍵字

self關鍵字是成員方法定義的時候,必須填寫的。

 

  • 它用來表示類對象自身的意思
  • 當我們使用類對象調用方法的是,self會自動被python傳入
  • 在方法內部,想要訪問類的成員變量,必須使用self

 


 

注意事項

self關鍵字,盡管在參數列表中,但是傳參的時候可以忽略它。如:


 

可以看到,在傳入參數的時候,self是透明的,可以不用理會它。

三、類和對象現實世界的事物和類


 

現實世界的事物也有屬性和行為,類也有屬性和行為。使用程序中的類,可以完美的描述現實世界的事物。

類和對象

基于類創建對象的語法:


 

類只是一種程序內的“設計圖紙”,需要基于圖紙生產實體(對象),才能正常工作這種套路,稱之為:面向對象編程。

使用類和對象描述現實事物

在現實中,生產事物


 

在程序中通過類來描述


 

基于類創建對象


 

這就是面向對象編程:設計類,基于類創建對象,由對象做具體的工作。

四、構造方法屬性(成員變量)的賦值


 

構造方法

Python類可以使用:__init__()方法,稱之為構造方法。

可以實現:

 

  • 在創建類對象(構造類)的時候,會自動執行。
  • 在創建類對象(構造類)的時候,將傳入參數自動傳遞給__init__方法使用。

 


 

構造方法注意事項

  • 重要的事情說三遍,構造方法名稱:__init__ __init__ __init__ , 千萬不要忘記init前后都有2個下劃線
  • 構造方法也是成員方法,不要忘記在參數列表中提供:self
  • 在構造方法內定義成員變量,需要使用self關鍵字

 


 

這是因為:變量是定義在構造方法內部,如果要成為成員變量,需要用self來表示。

五、其它內置方法魔術方法

上文學習的__init__ 構造方法,是Python類內置的方法之一。

這些內置的類方法,各自有各自特殊的功能,這些內置方法我們稱之為:魔術方法


 

__str__ 字符串方法


 

當類對象需要被轉換為字符串之時,會輸出如上結果(內存地址)

內存地址沒有多大作用,我們可以通過__str__方法,控制類轉換為字符串的行為。


 

 

  • 方法名:__str__
  • 返回值:字符串
  • 內容:自行定義
__lt__ 小于符號比較方法

 


 

直接對2個對象進行比較是不可以的,但是在類中實現__lt__方法,即可同時完成:小于符號 和 大于符號 2種比較


 

__le__ 小于等于比較符號方法

魔術方法:__le__可用于:<=、>=兩種比較運算符上。


 

__eq__,比較運算符實現方法


 

不實現__eq__方法,對象之間可以比較,但是是比較內存地址,也即是:不同對象==比較一定是False結果。

實現了__eq__方法,就可以按照自己的想法來決定2個對象是否相等了。

六、封裝面向對象的三大特性

面向對象編程,是許多編程語言都支持的一種編程思想。

簡單理解是:基于模板(類)去創建實體(對象),使用對象完成功能開發。

面向對象包含3大主要特性:

 

  • 封裝
  • 繼承
  • 多態
封裝

 

封裝表示的是,將現實世界事物的:

 

  • 屬性
  • 行為

 

封裝到類中,描述為:

 

  • 成員變量
  • 成員方法

 


 

從而完成程序對現實世界事物的描述。

對用戶隱藏的屬性和行為

現實世界中的事物,有屬性和行為。

但是不代表這些屬性和行為都是開放給用戶使用的。


 

蘋果越獄、Android/ target=_blank class=infotextkey>安卓root,也是為了突破權限使用這些對用戶隱藏的屬性和行為。

私有成員

既然現實事物有不公開的屬性和行為,那么作為現實事物在程序中映射的類,也應該支持。

類中提供了私有成員的形式來支持。

 

  • 私有成員變量
  • 私有成員方法

 

定義私有成員的方式非常簡單,只需要:

 

  • 私有成員變量:變量名以__開頭(2個下劃線)
  • 私有成員方法:方法名以__開頭(2個下劃線)

 


 

即可完成私有成員的設置

使用私有成員


 

私有成員無法被類對象使用,但是可以被其它的成員使用。


 

七、繼承繼承的引出


 

如果你是設計師,你會如何選擇?

 

  • 每一代新款手機,都從零開始出設計圖
  • 基于老款的設計圖,修修改改

 


 

單繼承


 


 

繼承分為:單繼承和多繼承

使用如圖語法,可以完成類的單繼承。

繼承表示:將從父類那里繼承(復制)來成員變量和成員方法(不含私有)

多繼承

Python的類之間也支持多繼承,即一個類,可以繼承多個父類


 


 

多繼承注意事項

多個父類中,如果有同名的成員,那么默認以繼承順序(從左到右)為優先級。即:先繼承的保留,后繼承的被覆蓋。


 

八、類型注解復寫

子類繼承父類的成員屬性和成員方法后,如果對其“不滿意”,那么可以進行復寫。

即:在子類中重新定義同名的屬性或方法即可。


 

調用父類同名成員

一旦復寫父類成員,那么類對象調用成員的時候,就會調用復寫后的新成員

如果需要使用被復寫的父類的成員,需要特殊的調用方式:


 

8.1 變量的類型注解

為什么需要類型注解

在PyCharm中編寫代碼,我們經常能夠見到如下提示:


 

自動提示可用方法,因為PyCharm確定這個對象,是list類型。

同樣,我們換一份代碼:

定義一個函數func,接收一個參數data

你會發現,PyCharm不會在做出任何提示了


 

又或者當我們調用方法,進行傳參的時候(快捷鍵ctrl + p彈出提示):


 

類型注解

Python在3.5版本的時候引入了類型注解,以方便靜態類型檢查工具,IDE等第三方工具。

類型注解:在代碼中涉及數據交互的地方,提供數據類型的注解(顯式的說明)。

主要功能:

 

  • 幫助第三方IDE工具(如PyCharm)對代碼進行類型推斷,協助做代碼提示
  • 幫助開發者自身對變量進行類型注釋

 

支持:

 

  • 變量的類型注解
  • 函數(方法)形參列表和返回值的類型注解

 

類型注解的語法

為變量設置類型注解

基礎語法: 變量: 類型


 


 

除了使用 變量: 類型, 這種語法做注解外,也可以在注釋中進行類型注解。

語法:

# type: 類型


 

為變量設置注解,顯示的變量定義,一般無需注解:


 

如圖,就算不寫注解,也明確的知曉變量的類型


 

類型注解的限制

類型注解主要功能在于:

 

  • 幫助第三方IDE工具(如PyCharm)對代碼進行類型推斷,協助做代碼提示
  • 幫助開發者自身對變量進行類型注釋(備注)

 

并不會真正的對類型做驗證和判斷。

也就是,類型注解僅僅是提示性的,不是決定性的


 

如圖代碼,是不會報錯的哦。

8.2 函數(方法)的類型注解

函數(方法)的類型注解 - 形參注解


 

如圖所示:

 

  • 在編寫函數(方法),使用形參data的時候,工具沒有任何提示
  • 在調用函數(方法),傳入參數的時候,工具無法提示參數類型

 

這些都是因為,我們在定義函數(方法)的時候,沒有給形參進行注解

函數和方法的形參類型注解語法:


 

函數(方法)的類型注解 - 返回值注解

同時,函數(方法)的返回值也是可以添加類型注解的。

語法如下:


 

8.3 Union類型


 

使用Union[類型, ......, 類型]

可以定義聯合類型注解

Union聯合類型注解,在變量注解、函數(方法)形參和返回值注解中,均可使用。


 

九、多態

多態,指的是:多種狀態,即完成某個行為時,使用不同的對象會得到不同的狀態。如何理解?


 

同樣的行為(函數),傳入不同的對象,得到不同的狀態。


 

多態常作用在繼承關系上.

比如

 

  • 函數(方法)形參聲明接收父類對象
  • 實際傳入父類的子類對象進行工作

 

即:

 

  • 以父類做定義聲明
  • 以子類做實際工作
  • 用以獲得同一行為, 不同狀態

 

抽象類(接口)

細心的同學可能發現了,父類Animal的speak方法,是空實現


 

為什么要使用抽象類呢?


 

提出標準后,不同的廠家各自實現標準的要求。

抽象類就好比定義一個標準,

包含了一些抽象的方法,要求子類必須實現。


 

十、綜合案例數據分析案例

某公司,有2份數據文件,現需要對其進行分析處理,計算每日的銷售額并以柱狀圖表的形式進行展示。


 

數據內容


 

 

  • 1月份數據是普通文本,使用逗號分割數據記錄,從前到后分別是(日期,訂單id,銷售額,銷售省份)
  • 2月份數據是JSON數據,同樣包含(日期,訂單id,銷售額,銷售省份)
需求分析

 


 

作為面向對象的程序員,我們全程將使用面向對象的思想來進行任務的開發。

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定