0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python面向?qū)ο笊罨ㄉ希?/h1>

前言

哈嘍, 大家好, 我是了不起!

歡迎大家來觀看了不起的冒險之旅. 為了方便起見, 文中以小知為名. 講述了不起在Python異世界的冒險之旅.

天空之城是座高聳云端的城堡. 位于西海岸附近, 在城堡的最頂端可以眺望到天空之海. 直到格蘭之森那場大火的發(fā)生,使得圍繞在它周圍的魔法陣力量減弱,人們才終于重新看到天空之城的真實模樣. 當(dāng)時,關(guān)于天界的傳聞甚至比天上的繁星還多,但是卻沒有一個人能夠證明它真實存在。


實例對象和類對象創(chuàng)建過程內(nèi)存分析

我們以下面代碼為例,分析整個創(chuàng)建過程:

classStudent:

company="sxd"#類屬性

count=0#類屬性

def__init__(self,name,score):

self.name=name#實例屬性

self.score=score

Student.count=Student.count+1

defsay_score(self):#實例方法

print("我的公司是:",Student.company)

print(self.name,"的分數(shù)是:",self.score)

s1=Student("時間靜止",18)#s1是實例對象,自動調(diào)用__init__()方法

s2=Student("不是簡史",81)

s1.say_score()

print('一共創(chuàng)建{0}個Student對象'.format(Student.count))

print("s1的引用:",id(s1))

print("s2的引用:",id(s2))

print("Student的引用:",id(Student))

pYYBAGRcuk6AAcKEAAFo1aKJyGU270.png

默認的類方法

init構(gòu)造方法和__new__ 方法

初始化對象, 我們需要定義構(gòu)造函數(shù)__init__()方法 構(gòu)造方法用于執(zhí)行“實例對象的初始化工作”, 即對象創(chuàng)建后, 初始化當(dāng)前對象的相關(guān)屬性, 無返回值 如果將對象比作一座房子, 則構(gòu)造方法(__init__)是負責(zé)初始化(裝修) , 不是建對象(房子)

__init__()的要點如下(約等于Java的構(gòu)造方法):

  1. 名稱固定, 必須為: __init__()
  2. 第一個參數(shù)固定, 必須為: self.self指的就是剛剛創(chuàng)建好的實例對象
  3. 構(gòu)造函數(shù)通常用來初始化實例對象的實例屬性 通過“類名(參數(shù)列表)”來調(diào)用構(gòu)造函數(shù). 調(diào)用后, 將創(chuàng)建好的對象返回給相應(yīng)的變量. 比如: s1 = Student("時間靜止", 80)
  4. __init__()方法: 初始化創(chuàng)建好的對象,初始化指的是: "給實例屬性賦值"
  5. 如果我們不定義__init__方法, 系統(tǒng)會提供一個默認的__init__方法. 如果我們定義了帶參的__init__方法, 系統(tǒng)不創(chuàng)建默認的__init__方法
  6. __new__()方法: 用于創(chuàng)建對象, 但我們一般無需重定義該方法

注意:

  • Python中的 self 相當(dāng)于C++中的 self指針 , JAVA和C#中的 this 關(guān)鍵字
  • Python中, self 必須為構(gòu)造函數(shù)的第一個參數(shù), 名字可以任意修改, 但一般都叫做 self.他的作用是指向當(dāng)前對象的本身/當(dāng)前對象的引用

__del__方法(析構(gòu)函數(shù))和垃圾回收機制

__del__()稱為“析構(gòu)方法”, 用于實現(xiàn)對象被銷毀時所需的操作. 比如: 釋放對象占用的資源, 例如: 打開的文件資源、網(wǎng)絡(luò)連接等

注意:

  1. Python實現(xiàn)自動的垃圾回收, 當(dāng)對象沒有被引用時(引用計數(shù)為0), 由垃圾回收器調(diào)用__del__()
  2. 我們也可以通過 del語句 刪除對象, 從而保證調(diào)用__del__()
  3. 系統(tǒng)會自動提供__del__方法 , 一般不需要自定義析構(gòu)方法.

實操代碼

classPerson:

def__del__(self):

print("銷毀對象:{0}".format(self))

p1=Person()

p2=Person()

delp2

print("程序結(jié)束")

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4857

    瀏覽量

    69540
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4813

    瀏覽量

    85311
收藏 人收藏

    評論

    相關(guān)推薦

    Python面向對象編程詳解

    一般編程可分為面向過程編程,和面向對象編程。Python面向對象編程,與Java的
    發(fā)表于 09-04 16:35 ?625次閱讀
    <b class='flag-5'>Python</b>的<b class='flag-5'>面向</b><b class='flag-5'>對象</b>編程詳解

    labview面向對象編程

    點擊學(xué)習(xí)>>《龍哥手把手教你學(xué)LabVIEW視覺設(shè)計》視頻教程使用LabVIEW面向對象編程方法,對于大型測試應(yīng)用程序來講,面向對象相對于面向
    發(fā)表于 11-24 11:01

    3分鐘看懂Python面向對象

    可以的,Python并不做硬性的限制。Python面向對象特征如下:封裝面向對象程序設(shè)計中的術(shù)
    發(fā)表于 06-08 14:20

    LabVIEW面向對象的ActorFramework(1)

    ` 本帖最后由 bollworm 于 2020-2-10 14:54 編輯 本系列文章主要闡述以下幾個問題:(1)什么是面向對象編程?(2)為什么要學(xué)習(xí)面向編程?(3)LabVIEW面向
    發(fā)表于 02-10 14:09

    面向對象編程及其三大特性 精選資料分享

    編程語言分為面向過程編程、函數(shù)式編程和面向對象編程。其實python就是一種面向對象編程,那么我
    發(fā)表于 07-21 08:38

    談?wù)?b class='flag-5'>面向對象編程

    在工業(yè)自動化領(lǐng)域,梯形圖邏輯仍然是最常用的編程語言之一,但對于更加復(fù)雜的控制對象,面向對象編程不失為一種高效率的方式。下面先來談?wù)?b class='flag-5'>面向對象
    發(fā)表于 09-08 07:47

    面向對象編程總結(jié)

    如何從面向過程到面向對象OOP?面向對象是什么?有何特點?
    發(fā)表于 09-29 08:19

    面向對象編程介紹

    目錄一、面向對象編程介紹1.面向過程編程2.函數(shù)式編程3.面向對象編程二.面向
    發(fā)表于 12-13 07:22

    網(wǎng)絡(luò)講壇:面向對象的編程()-labview視頻教程

    網(wǎng)絡(luò)講壇:面向對象的編程()-labview視頻教程
    發(fā)表于 03-26 16:41 ?252次下載

    這可能是Python面向對象編程的最佳實踐

    本節(jié)介紹了attrs和cattrs兩個庫,讓實現(xiàn)Python面向對象編程不再難。
    的頭像 發(fā)表于 06-22 12:07 ?2755次閱讀

    利用Python和PyTorch處理面向對象的數(shù)據(jù)集

    本篇是利用 Python 和 PyTorch 處理面向對象的數(shù)據(jù)集系列博客的第 2 篇。 如需閱讀第 1 篇:原始數(shù)據(jù)和數(shù)據(jù)集,請參閱此處。 我們在第 1 部分中已定義 MyDataset 類,現(xiàn)在
    的頭像 發(fā)表于 08-25 15:30 ?3088次閱讀

    利用 Python 和 PyTorch 處理面向對象的數(shù)據(jù)集(2)) :創(chuàng)建數(shù)據(jù)集對象

    本篇是利用 Python 和 PyTorch 處理面向對象的數(shù)據(jù)集系列博客的第 2 篇。我們在第 1 部分中已定義 MyDataset 類,現(xiàn)在,讓我們來例化 MyDataset 對象
    的頭像 發(fā)表于 08-02 17:35 ?1014次閱讀
    利用 <b class='flag-5'>Python</b> 和 PyTorch 處理<b class='flag-5'>面向</b><b class='flag-5'>對象</b>的數(shù)據(jù)集(2)) :創(chuàng)建數(shù)據(jù)集<b class='flag-5'>對象</b>

    面向過程與面向對象的區(qū)別

    說起面向對象,大家可能會想到其他的,但是此對象非彼對象哈哈,不必驚慌,也特別好搞定。 在聽到面向
    的頭像 發(fā)表于 02-15 11:10 ?4515次閱讀
    <b class='flag-5'>面向</b>過程與<b class='flag-5'>面向</b><b class='flag-5'>對象</b>的區(qū)別

    Python中的類和對象詳解

    Python 是一種面向對象的編程語言,它支持類和對象。類是一種用戶自定義的數(shù)據(jù)類型,用于定義對象的屬性和方法。
    的頭像 發(fā)表于 04-20 16:53 ?1303次閱讀

    Python面向對象深化(下)

    __call__ ?方法和可調(diào)用對象 凡是可以將 () 直接應(yīng)用到自身并執(zhí)行, 都稱為可調(diào)用對象. 注意: 可調(diào)用對象包括自定義的函數(shù)、Python 內(nèi)置函數(shù)、以及本節(jié)所講的實例
    的頭像 發(fā)表于 05-11 17:52 ?734次閱讀