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

python利用MethodType綁定方法到類示例代碼

 更新時間:2017年08月27日 08:41:28   作者:自傷無色丶  
這篇文章主要給大家介紹了關(guān)于python利用MethodType綁定方法到類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

本文主要給大家介紹了關(guān)于python用MethodType綁定方法到類的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:

對python中MethodType不熟悉的朋友們可以先看看這篇文章

問題引出

先看下面一段代碼:

from types import MethodType 
def set_age(self,age): 
 self.age=age 
class Stu(object): 
 pass 
Stu.set_age=MethodType(set_age,Stu) 
A=Stu() 
B=Stu() 
A.set_age(10) 
B.set_age(15) 
print(A.age,B.age)#結(jié)果都是15

運(yùn)行這段代碼我們會發(fā)現(xiàn)輸出結(jié)果都是15,我們明明分別設(shè)置了A和B對象的屬性值,為什么,會這樣呢?開始我也有一樣的疑問,后來發(fā)現(xiàn)是對MethodType的理解不夠,經(jīng)過查證,得到如下解釋。

解析

Stu類本身并沒有屬性和方法,所以用這個類創(chuàng)建的實例也沒有屬性和方法。用MethodType將set_age方法綁定到Stu類,并不是將這個方法直接寫到Stu類內(nèi)部,而是在Stu內(nèi)存中創(chuàng)建一個link指向外部的方法,在創(chuàng)建Stu實例的時候這個link也會被復(fù)制。所以不管創(chuàng)建多少實例,這些實例和Stu類都指向同一個set_age方法。A.set_age(10)并沒有在A這個實例內(nèi)部創(chuàng)建age屬性,而是將age屬性創(chuàng)建在外部set_age方法的內(nèi)存區(qū)中。因為A和B內(nèi)部link都指向外部set_age方法的內(nèi)存區(qū),所以不管A還是B在調(diào)用set_age方法的時候改變的是set_age方法內(nèi)存區(qū)里的age屬性,所以A改了B也就改了,如果新建一個實例C在沒有調(diào)用set_age方法的前提下也會有age屬性,因為C的link指向的set_age方法的內(nèi)存區(qū),而set_age之前被A或者B調(diào)用過了。

總結(jié)

大概意思就是通過這樣綁定的方法設(shè)置的屬性有點java中靜態(tài)變量的意思

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • python shell根據(jù)ip獲取主機(jī)名代碼示例

    python shell根據(jù)ip獲取主機(jī)名代碼示例

    這篇文章主要介紹了python shell根據(jù)ip獲取主機(jī)名代碼示例,涉及用socket模塊和shell中hostname命令獲取等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Python實現(xiàn)21點小游戲的示例代碼

    Python實現(xiàn)21點小游戲的示例代碼

    1931年,當(dāng)美國內(nèi)華達(dá)州宣布賭博為合法活動時,21點游戲第一次公開出現(xiàn)在內(nèi)華達(dá)州的賭場俱樂部,15年內(nèi),它取代擲骰子游戲,而一舉成為非常流行的賭場莊家參與的賭博游戲。本文將用Python實現(xiàn)這一經(jīng)典游戲,感興趣的可以了解一下
    2022-09-09
  • python連接mongodb操作數(shù)據(jù)示例(mongodb數(shù)據(jù)庫配置類)

    python連接mongodb操作數(shù)據(jù)示例(mongodb數(shù)據(jù)庫配置類)

    這篇文章主要介紹了python連接mongodb操作數(shù)據(jù)示例,主要包括插入數(shù)據(jù)、更新數(shù)據(jù)、查詢數(shù)據(jù)、刪除數(shù)據(jù)等
    2013-12-12
  • python使用mysql的兩種使用方式

    python使用mysql的兩種使用方式

    pymsql是Python中操作MySQL的模塊。這篇文章主要介紹了python使用mysql的兩種使用方式,需要的朋友可以參考下
    2018-03-03
  • Python實現(xiàn)快速排序的方法詳解

    Python實現(xiàn)快速排序的方法詳解

    這篇文章主要介紹了Python實現(xiàn)快速排序的方法,結(jié)合實例形式詳細(xì)分析了快速排序的思路、原理及Python具體實現(xiàn)技巧與相關(guān)操作注意事項,需要的朋友可以參考下
    2019-10-10
  • python 在sql語句中使用%s,%d,%f說明

    python 在sql語句中使用%s,%d,%f說明

    這篇文章主要介紹了python 在sql語句中使用%s,%d,%f說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python enumerate內(nèi)置函數(shù)用法總結(jié)

    python enumerate內(nèi)置函數(shù)用法總結(jié)

    這篇文章主要介紹了python enumerate內(nèi)置函數(shù)用法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • 使用Django框架中ORM系統(tǒng)實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)增刪改查

    使用Django框架中ORM系統(tǒng)實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)增刪改查

    這篇文章主要介紹了使用Django的ORM實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)增刪改查方法,文中附含詳細(xì)示例代碼以及過程詳解,有需要的朋友可以借鑒參考下
    2021-09-09
  • python實戰(zhàn)之德州撲克第三步-比較大小

    python實戰(zhàn)之德州撲克第三步-比較大小

    這篇文章主要介紹了python實戰(zhàn)之德州撲克第三步-比較大小,穩(wěn)中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • pyqt5蒙版遮罩mask,setmask的使用

    pyqt5蒙版遮罩mask,setmask的使用

    mask()和setmask()一般是在pyqt繪圖時常見,本文就來介紹一下pyqt5蒙版遮罩mask,setmask的使用,具有一定的參考價值,感興趣的可以了解一下
    2021-06-06

最新評論

山丹县| 汝城县| 奈曼旗| 探索| 宜城市| 仁布县| 新巴尔虎右旗| 义马市| 柏乡县| 沿河| 绥滨县| 来宾市| 平凉市| 都匀市| 墨江| 交口县| 光泽县| 安义县| 许昌市| 克拉玛依市| 永平县| 贵州省| 呼伦贝尔市| 定襄县| 长泰县| 禹城市| 嘉兴市| 时尚| 德保县| 南城县| 班戈县| 平阴县| 高邑县| 马山县| 凤城市| 高淳县| 酒泉市| 革吉县| 安龙县| 南和县| 榆中县|