最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python面向?qū)ο笤砼c基礎(chǔ)語法詳解

 更新時間:2020年01月02日 11:26:39   作者:小飛俠v科比  
這篇文章主要介紹了Pyhton面向?qū)ο笤砼c基礎(chǔ)語法,結(jié)合實例形式分析了Python面向?qū)ο蟪绦蛟O計中的基本原理、概念、語法與相關(guān)使用技巧,需要的朋友可以參考下

本文實例講述了Python面向?qū)ο笤砼c基礎(chǔ)語法。分享給大家供大家參考,具體如下:

目標

dir 內(nèi)置函數(shù)
定義簡單的類(只包含方法)
方法中的 self 參數(shù)
初始化方法
內(nèi)置方法和屬性

01. dir 內(nèi)置函數(shù)(知道)

在 Python 中 對象幾乎是無所不在的,我們之前學習的 變量、數(shù)據(jù)、函數(shù) 都是對象
在 Python 中可以使用以下兩個方法驗證:

在 標識符 / 數(shù)據(jù) 后輸入一個 .,然后按下 TAB 鍵,iPython 會提示該對象能夠調(diào)用的 方法列表
使用內(nèi)置函數(shù) dir 傳入 標識符 / 數(shù)據(jù),可以查看對象內(nèi)的 所有屬性及方法
提示 方法名 格式的方法是 Python 提供的 內(nèi)置方法 / 屬性,稍后會給大家介紹一些常用的 內(nèi)置方法 / 屬性
在這里插入圖片描述
提示 利用好 dir() 函數(shù),在學習時很多內(nèi)容就不需要死記硬背了

02. 定義簡單的類(只包含方法)

面向?qū)ο?是 更大 的 封裝,在 一個類中 封裝 多個方法,這樣 通過這個類創(chuàng)建出來的對象,就可以直接調(diào)用這些方法了!

2.1 定義只包含方法的類

在 Python 中要定義一個只包含方法的類,語法格式如下:

class 類名:

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

方法 的定義格式和之前學習過的函數(shù) 幾乎一樣
區(qū)別在于第一個參數(shù)必須是 self,大家暫時先記住,稍后介紹 self
注意:類名 的 命名規(guī)則 要符合 大駝峰命名法

2.2 創(chuàng)建對象

當一個類定義完成之后,要使用這個類來創(chuàng)建對象,語法格式如下:

對象變量 = 類名()

2.3 第一個面向?qū)ο蟪绦?/h2>

需求

小貓 愛 吃 魚,小貓 要 喝 水
分析

定義一個貓類 Cat
定義兩個方法 eat 和 drink
按照需求 —— 不需要定義屬性
在這里插入圖片描述

class Cat:
  """這是一個貓類"""

  def eat(self):
    print("小貓愛吃魚")

  def drink(self):
    print("小貓在喝水")

tom = Cat()
tom.drink()
tom.eat()

引用概念的強調(diào)
在面向?qū)ο箝_發(fā)中,引用的概念是同樣適用的!

在 Python 中使用類 創(chuàng)建對象之后,tom 變量中 仍然記錄的是 對象在內(nèi)存中的地址
也就是 tom 變量 引用 了 新建的貓對象
使用 print 輸出 對象變量,默認情況下,是能夠輸出這個變量 引用的對象 是 由哪一個類創(chuàng)建的對象,以及 在內(nèi)存中的地址(十六進制表示)
提示:在計算機中,通常使用 十六進制 表示 內(nèi)存地址

十進制 和 十六進制 都是用來表達數(shù)字的,只是表示的方式不一樣
十進制 和 十六進制 的數(shù)字之間可以來回轉(zhuǎn)換
%d 可以以 10 進制 輸出數(shù)字
%x 可以以 16 進制 輸出數(shù)字
案例進階 —— 使用 Cat 類再創(chuàng)建一個對象

lazy_cat = Cat()
lazy_cat.eat()
lazy_cat.drink()

03. 方法中的 self 參數(shù)

3.1 案例改造 —— 給對象增加屬性

在 Python 中,要 給對象設置屬性,非常的容易,但是不推薦使用
因為:對象屬性的封裝應該封裝在類的內(nèi)部
只需要在 類的外部的代碼 中直接通過 . 設置一個屬性即可
注意:這種方式雖然簡單,但是不推薦使用!

tom.name = "Tom"
...

lazy_cat.name = "大懶貓"

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

由 哪一個對象 調(diào)用的方法,方法內(nèi)的 self 就是 哪一個對象的引用

在類封裝的方法內(nèi)部,self 就表示 當前調(diào)用方法的對象自己
調(diào)用方法時,程序員不需要傳遞 self 參數(shù)
在方法內(nèi)部
可以通過 self. 訪問對象的屬性
也可以通過 self. 調(diào)用其他的對象方法
改造代碼如下:

class Cat:

  def eat(self):
    print("%s 愛吃魚" % self.name)

tom = Cat()
tom.name = "Tom"
tom.eat()

lazy_cat = Cat()
lazy_cat.name = "大懶貓"
lazy_cat.eat()

在這里插入圖片描述
在 類的外部,通過 變量名. 訪問對象的 屬性和方法
在 類封裝的方法中,通過 self. 訪問對象的 屬性和方法

04. 初始化方法

4.1 之前代碼存在的問題 —— 在類的外部給對象增加屬性

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

tom = Cat()
tom.drink()
tom.eat()
tom.name = "Tom"
print(tom)

程序執(zhí)行報錯如下:

AttributeError: 'Cat' object has no attribute 'name'
屬性錯誤:'Cat' 對象沒有 'name' 屬性

提示

在日常開發(fā)中,不推薦在 類的外部 給對象增加屬性
如果在運行時,沒有找到屬性,程序會報錯
對象應該包含有哪些屬性,應該 封裝在類的內(nèi)部

4.2 初始化方法

當使用 類名() 創(chuàng)建對象時,會 自動 執(zhí)行以下操作:
為對象在內(nèi)存中 分配空間 —— 創(chuàng)建對象
為對象的屬性 設置初始值 —— 初始化方法(init)
這個 初始化方法 就是 init 方法,init 是對象的內(nèi)置方法
init 方法是 專門 用來定義一個類 具有哪些屬性的方法!

在 Cat 中增加 init 方法,驗證該方法在創(chuàng)建對象時會被自動調(diào)用

class Cat:
  """這是一個貓類"""

  def __init__(self):
    print("初始化方法")

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

init 方法內(nèi)部使用 self.屬性名 = 屬性的初始值 就可以 定義屬性
定義屬性之后,再使用 Cat 類創(chuàng)建的對象,都會擁有該屬性

class Cat:

  def __init__(self):

    print("這是一個初始化方法")
    
    # 定義用 Cat 類創(chuàng)建的貓對象都有一個 name 的屬性
    self.name = "Tom"

  def eat(self):
    print("%s 愛吃魚" % self.name)

# 使用類名()創(chuàng)建對象的時候,會自動調(diào)用初始化方法 __init__
tom = Cat()

tom.eat()

4.4 改造初始化方法 —— 初始化的同時設置初始值

在開發(fā)中,如果希望在 創(chuàng)建對象的同時,就設置對象的屬性,可以對 init 方法進行 改造
把希望設置的屬性值,定義成 init 方法的參數(shù)
在方法內(nèi)部使用 self.屬性 = 形參 接收外部傳遞的參數(shù)
在創(chuàng)建對象時,使用 類名(屬性1, 屬性2…) 調(diào)用

class Cat:

  def __init__(self, name):
    print("初始化方法 %s" % name)
    self.name = name
  ...
  
tom = Cat("Tom")
...

lazy_cat = Cat("大懶貓")
...

05. 內(nèi)置方法和屬性

在這里插入圖片描述

5.1 del 方法(知道)

在 Python 中

當使用 類名() 創(chuàng)建對象時,為對象 分配完空間后,自動 調(diào)用 init 方法
當一個 對象被從內(nèi)存中銷毀 前,會 自動 調(diào)用 del 方法
應用場景

init 改造初始化方法,可以讓創(chuàng)建對象更加靈活
del 如果希望在對象被銷毀前,再做一些事情,可以考慮一下 del 方法
生命周期

一個對象從調(diào)用 類名() 創(chuàng)建,生命周期開始
一個對象的 del 方法一旦被調(diào)用,生命周期結(jié)束
在對象的生命周期內(nèi),可以訪問對象屬性,或者讓對象調(diào)用方法
class Cat:

class Cat:

  def __init__(self, new_name):

    self.name = new_name

    print("%s 來了" % self.name)

  def __del__(self):

    print("%s 去了" % self.name)

# tom 是一個全局變量
tom = Cat("Tom")
print(tom.name)

# del 關(guān)鍵字可以刪除一個對象
del tom

print("-" * 50)

5.2 str 方法

在 Python 中,使用 print 輸出 對象變量,默認情況下,會輸出這個變量 引用的對象 是 由哪一個類創(chuàng)建的對象,以及 在內(nèi)存中的地址(十六進制表示)
如果在開發(fā)中,希望使用 print 輸出 對象變量 時,能夠打印 自定義的內(nèi)容,就可以利用 str 這個內(nèi)置方法了
注意:str 方法必須返回一個字符串

class Cat:

  def __init__(self, new_name):

    self.name = new_name

    print("%s 來了" % self.name)

  def __del__(self):

    print("%s 去了" % self.name)

  def __str__(self):
    return "我是小貓:%s" % self.name

tom = Cat("Tom")
print(tom)

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O計入門與進階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設計有所幫助。

相關(guān)文章

  • Python?GUI和游戲開發(fā)從入門到實踐

    Python?GUI和游戲開發(fā)從入門到實踐

    GUI是圖形用戶界面的縮寫,圖形化的用戶界面對使用過計算機的人來說應該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Python圖形用戶界面與游戲開發(fā)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Python實戰(zhàn)之畫哆啦A夢(超詳細步驟)

    Python實戰(zhàn)之畫哆啦A夢(超詳細步驟)

    這篇文章主要介紹了Python實戰(zhàn)之畫哆啦A夢(超詳細步驟),文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • pytorch索引查找 index_select的例子

    pytorch索引查找 index_select的例子

    今天小編就為大家分享一篇pytorch索引查找 index_select的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python中DataFrame與內(nèi)置數(shù)據(jù)結(jié)構(gòu)相互轉(zhuǎn)換的實現(xiàn)

    Python中DataFrame與內(nèi)置數(shù)據(jù)結(jié)構(gòu)相互轉(zhuǎn)換的實現(xiàn)

    pandas?支持我們從?Excel、CSV、數(shù)據(jù)庫等不同數(shù)據(jù)源當中讀取數(shù)據(jù),來構(gòu)建?DataFrame。但有時數(shù)據(jù)并不來自這些外部數(shù)據(jù)源,這就涉及到了?DataFrame?和?Python?內(nèi)置數(shù)據(jù)結(jié)構(gòu)之間的相互轉(zhuǎn)換,本文就來和大家詳細聊聊
    2023-02-02
  • 名片管理系統(tǒng)python版

    名片管理系統(tǒng)python版

    這篇文章主要為大家詳細介紹了名片管理系統(tǒng)python版的相關(guān)代碼,數(shù)據(jù)保存導入Excel,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python實現(xiàn)的選擇排序算法原理與用法實例分析

    Python實現(xiàn)的選擇排序算法原理與用法實例分析

    這篇文章主要介紹了Python實現(xiàn)的選擇排序算法,簡單描述了選擇排序的原理,并結(jié)合實例形式分析了Python實現(xiàn)與應用選擇排序的具體操作技巧,需要的朋友可以參考下
    2017-11-11
  • tensorflow與numpy的版本兼容性問題的解決

    tensorflow與numpy的版本兼容性問題的解決

    這篇文章主要介紹了tensorflow與numpy的版本兼容性問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Python PySpider爬蟲框架安裝使用教程

    Python PySpider爬蟲框架安裝使用教程

    PySpider是一個Python編寫的分布式網(wǎng)絡爬蟲框架,它可以幫助開發(fā)者快速構(gòu)建和部署爬蟲,并支持爬蟲任務的分布式運行,PySpider基于Twisted網(wǎng)絡框架和MongoDB數(shù)據(jù)庫,具有高效、穩(wěn)定、易用等特點,同時還提供了一套Web界面,可以方便地查看爬蟲任務的運行狀態(tài)和結(jié)果
    2023-11-11
  • Flask項目搭建及部署(最全教程)

    Flask項目搭建及部署(最全教程)

    本文主要介紹了Flask項目搭建及部署,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Python yield的用法實例分析

    Python yield的用法實例分析

    這篇文章主要介紹了Python yield的用法,結(jié)合實例形式分析了Python yield的基本功能、使用方法及操作注意事項,需要的朋友可以參考下
    2020-03-03

最新評論

罗江县| 莆田市| 江孜县| 贞丰县| 横峰县| 柘城县| 清远市| 平果县| 南投市| 房产| 嘉善县| 漯河市| 八宿县| 原平市| 咸丰县| 东海县| 莫力| 密云县| 巴中市| 霞浦县| 竹北市| 大理市| 丰县| 稻城县| 兴隆县| 沧源| 囊谦县| 灵宝市| 玉屏| 昭平县| 南投市| 遂昌县| 增城市| 东光县| 沂源县| 浑源县| 玉林市| 宁陕县| 额尔古纳市| 裕民县| 萝北县|