python 中MethodType方法詳解和使用

2021-08-10 12:09:42 字數 1304 閱讀 1117

#

!/usr/bin/python

#-*-coding:utf-8-*-

from types import

methodtype

"""檔名 class2.py

methodtype 測試

"""#

首先看第一種方式

#建立乙個方法

defset_age(self, arg):

self.age =arg

#建立乙個類

class

student(object):

pass

#------以上為公共部分

s_one =student()

#給student 建立乙個方法 但這裡不是在class中建立而是建立了乙個鏈結把外部的set_age 方法用鏈結知道student內

s_one.set_age =methodtype(set_age,s_one,student)

s_one.set_age(32) #

呼叫例項方法

print

s_one.age

#》結果 32

s_two =student()

s_two.set_age(100) #

這裡來驗證下是在類內有方法還是類外有方法。

print

s_two.age

#》結果traceback (most recent call last):

#》 file "class2.py", line 22, in

#》 s_two.set_age(100) #這裡來驗證下是在類內有方法還是類外有方法。

#》 attributeerror: 'student' object has no attribute 'set_age'

看另一種

#

直接用類來建立乙個方法 不過此時還是用鏈結的方式在類外的記憶體中建立

student.set_age =methodtype(set_age,student)

#此時在建立例項的時候外部方法 set_age 也會複製 這些例項和student類都指向同乙個set_age方法

new1 =student()

new2 =student()

new1.set_age(99)

new2.set_age(98)   #

第二個會覆蓋第乙個

print (new1.age,new2.age)   #

看結果 2個都是98

#》(98, 98)

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...

python中雙重迴圈 加速Python中的雙迴圈

有沒有辦法加快從上一次迭代更新其值的雙迴圈?在 中 def calc n,m x 1.0 y 2.0 container np.zeros n,2 for i in range n for j in range m x np.random.gamma 3,1.0 y y 4 y np.random....