RM新时代网站-首页

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

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

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

Python默認(rèn)類中的綁定方法怎么解除和對象的綁定關(guān)系呢

冬至配餃子 ? 來源:多蘭多 ? 作者:Toranto ? 2022-08-18 16:04 ? 次閱讀

property的使用

property是一個裝飾器,可以將類方法轉(zhuǎn)化為類屬性的表達(dá)。

舉個栗子:BMI指數(shù),肥胖指數(shù),很顯然,這是一個計算過程,但是在我們?nèi)祟惖恼J(rèn)知當(dāng)中,BMI更應(yīng)該是一個屬性而非方法。

pYYBAGL98LOAZOFDAABPcM0Z4Jk459.pngpYYBAGL98LiAAR0XAACVZTCd58g801.png

當(dāng)我們把代碼換成:

poYBAGL98MuACC49AAB-P9uFHSc904.png

很明顯,很難察覺這到底是執(zhí)行了一個方法還是調(diào)用了一個屬性。

綁定方法

一、對象綁定(默認(rèn))

綁定方法:

綁定給誰,就由誰來調(diào)用,誰來調(diào)用就把它當(dāng)作一個參數(shù)自動傳入

python中,凡是類中的方法默認(rèn)情況都是綁定給對象使用的

poYBAGL98O2AEUw_AABRdlmLAiI387.pngpYYBAGL98PKABiPZAAArtdGovy0192.png

我們得到了一段bound method一段文字,這就是綁定方法。這里面的tell_info方法是綁定給對象使用的。

那么,當(dāng)我們用類來調(diào)用該方法呢?會產(chǎn)生怎樣的效果?

poYBAGL98RyAI07JAACb2d3TCZo749.pngpYYBAGL98S2AamLnAABEyN4GbGA758.png

為了更明顯,我們隨便定義一個函數(shù)來執(zhí)行一下:

poYBAGL98UeAeAXeAAAp4bpV_aE923.pngpoYBAGL98U2AWcWlAABODPoCZdw883.png


這下很醒目了吧,當(dāng)類中的方法,用類去調(diào)用時,該方法是被當(dāng)做普通函數(shù)來執(zhí)行,而對象去調(diào)用則為綁定方法。對象綁定方法在python是默認(rèn)的,前兩天使用的也都是對象綁定方法,這里就不做演示了。

二、類綁定方法(classmethod)

既然Python默認(rèn)類中的方法或函數(shù),都是綁定給對象使用。那么類中的綁定方法怎么解除和對象的綁定關(guān)系,進(jìn)而綁定到類呢?

小明:“你問我我問誰???”

這個時候需要用到classmethod方法,它也是個裝飾器。

poYBAGL98XqAR2D4AAC4SAAMCn4637.pngpYYBAGL98ZOAV0zhAABRhD_SvT0606.png

和對象的綁定方法一樣:綁定給類,就由類來調(diào)用,并將類作為第一個參數(shù)傳入;

和對象綁定方法不同在于:當(dāng)對象在調(diào)用類的綁定方法時,也會默認(rèn)把類當(dāng)做參數(shù)傳遞進(jìn)去。

cls和self都是一種命名習(xí)慣,cls作為第一個參數(shù)來表示類本身,在類方法中用到。

三、類綁定方法示例

pYYBAGL98cyAJgfzAADn6jthuTc136.pngpYYBAGL98dGAcyCaAACW1myfplE811.pngpoYBAGL98eSAASqnAACAhATIzFI099.png

例子用的可能過于粗糙,那能怎么辦呢,我也是這樣學(xué)的。。。

非綁定方法

在類中,有很多普通的方法,本身不需要綁定給對象或類來使用,誰都可以調(diào)用,沒有自動傳值效果,這就是非綁定方法。在python中,方法會自動綁定給對象,當(dāng)我們需要解綁時來形成非綁定方法時,需要用到staticmethod方法,它還是一個裝飾器。

poYBAGL98gWANyM7AABzyuDLLOg653.pngpoYBAGL98gqAWwLTAABwPS7UtWM053.png

給每個人生成一個id號的示例:

poYBAGL98iWAV6a_AADXV5krWRo516.png

poYBAGL98jmAbU47AAB6O9qQJ5E632.png



審核編輯:劉清

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

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627
  • BMI
    BMI
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    3270
收藏 人收藏

    評論

    相關(guān)推薦

    fpga 管腳不讓綁定的問題,綁定時提示: Not assignable

    fpga 管腳不讓綁定的--提示 如下圖: 網(wǎng)上說將復(fù)用管腳設(shè)置成 普通I/O,我這也沒找到我要綁定的管腳,怎么設(shè)置。該管腳是和NOR_Flash相關(guān)的,無法綁定,我想實現(xiàn)掉電存儲一些數(shù)據(jù)的。沒有eeporm,倒是有一個Nand
    發(fā)表于 12-05 15:30

    【AI技術(shù)支持】ESP8684-WROOM-01C模組socket綁定失敗問題處理

    時,出現(xiàn)Socket綁定錯誤:errno112,這是為什么?啟明云端/02解決思路socket綁定失敗通常發(fā)生在以下情況:(1)嘗試在同一端口(DNS_PORT)上
    的頭像 發(fā)表于 12-04 01:00 ?174次閱讀
    【AI技術(shù)支持】ESP8684-WROOM-01C模組socket<b class='flag-5'>綁定</b>失敗問題處理

    怎么綁定IP地址和MAC地址

    本篇文章主要說一說怎么在本地計算機上綁定IP和MAC地址以及通過路由器綁定IP和MAC地址,并且這兩者綁定可以解決什么問題。 ? 先來說說怎么去綁定 本地計算上
    的頭像 發(fā)表于 12-01 22:48 ?210次閱讀

    機智云智家APP的設(shè)備掃描與綁定限制

    在使用機智云的智家APP時,用戶可能會遇到無法掃描和綁定設(shè)備的問題。這一現(xiàn)象的根本原因在于智家APP的使用限制和付費策略。Q智家APP的功能概述是什么?智家APP是機智云平臺為用戶提供的公
    的頭像 發(fā)表于 09-22 08:02 ?238次閱讀
    機智云智家APP的設(shè)備掃描與<b class='flag-5'>綁定</b>限制

    rk3588s 怎么將gpio中斷綁定到其它cpu

    目前了解到只有GIC的中斷才能用這種:echo 2 > /proc/irq/102/smp_affinity, 方式綁定cpu,而GPIO這種是用不了這種方式綁定的。 想問下有其它方式能讓3588支持gpio中斷綁定核心嗎
    發(fā)表于 07-16 15:09

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型綁定FA模型ServiceAbility

    本小節(jié)介紹Stage模型的兩種應(yīng)用組件如何綁定FA模型ServiceAbility組件。
    的頭像 發(fā)表于 06-25 21:47 ?301次閱讀
    鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型<b class='flag-5'>綁定</b>FA模型ServiceAbility

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型綁定Stage模型ServiceExtensionAbility

    本文介紹FA模型的三種應(yīng)用組件如何綁定Stage模型的ServiceExtensionAbility組件。
    的頭像 發(fā)表于 06-25 10:43 ?288次閱讀
    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型<b class='flag-5'>綁定</b>Stage模型ServiceExtensionAbility

    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表【綁定手勢方法】 手勢處理

    為組件綁定不同類型的手勢事件,并設(shè)置事件的響應(yīng)方法。
    的頭像 發(fā)表于 06-15 09:17 ?777次閱讀
    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表【<b class='flag-5'>綁定</b>手勢<b class='flag-5'>方法</b>】 手勢處理

    BLE藍(lán)牙掉電綁定信息消失的原因?怎么解決?

    測試手機連接后,重啟ESP32S3,板子上的綁定信息就丟失了。還有我添加到白名單的地址也會隨著重啟消失。白名單我可以通過NVS記錄,但是綁定的密鑰信息我無法存儲。我查閱了BLE的接口文檔,沒有看到保存綁定信息的接口。請教一下我應(yīng)
    發(fā)表于 06-14 06:25

    如何手動往esp32 arp列表添加自定義的arp綁定信息?

    我目前需要手動往esp32 arp列表添加自定義的arp綁定信息,而非arp請求獲得,因為另一方設(shè)備無法完成arp應(yīng)答 如IP為:192.168.88.2 MAC為:00:0A:35:01:FE:C0 arp綁定后我需要實現(xiàn)往
    發(fā)表于 06-07 08:14

    鴻蒙開發(fā)接口Ability框架:【@ohos.application.formBindingData (卡片數(shù)據(jù)綁定)】

    卡片數(shù)據(jù)綁定模塊提供卡片數(shù)據(jù)綁定的能力。包括FormBindingData對象的創(chuàng)建、相關(guān)信息的描述。
    的頭像 發(fā)表于 05-06 17:25 ?485次閱讀
    鴻蒙開發(fā)接口Ability框架:【@ohos.application.formBindingData (卡片數(shù)據(jù)<b class='flag-5'>綁定</b><b class='flag-5'>類</b>)】

    udp_bind這個綁定的端口怎么解除

    請教下,udp_bind 這個綁定的端口,剛開始是可以的,但是重新綁定時返回錯誤,有什么方法可以在 重新綁定解除之前的
    發(fā)表于 04-22 07:41

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語言基礎(chǔ)庫多線程并發(fā)概述

    對象 目前支持傳輸?shù)臄?shù)據(jù)對象可以分為普通對象、可轉(zhuǎn)移對象、可共享對象、Native綁定
    發(fā)表于 03-22 15:40

    請問tc233 Uart收發(fā)數(shù)據(jù)如何綁定到DMA?

    請問tc233 Uart收發(fā)數(shù)據(jù)如何綁定到DMA?綁定到DMA之后中斷觸發(fā)還是原來的 IfxCpu_Irq_installInterruptHandler()這個函數(shù)里綁定的中斷服務(wù)函數(shù)嗎?目前
    發(fā)表于 01-22 06:27

    服務(wù)器寶塔面板怎么綁定多個ip?

    服務(wù)器寶塔面板怎么綁定多個ip?在寶塔面板綁定多個IP地址可以通過以下步驟完成: 1、登錄寶塔面板 使用你的瀏覽器訪問寶塔面板的網(wǎng)址,并使用管理員賬號和密碼登錄。 2、進(jìn)入站點管理 在寶塔面板左側(cè)
    的頭像 發(fā)表于 01-12 17:29 ?1706次閱讀
    RM新时代网站-首页