python类的成员函数_Python为类对象动态添加成员函数
Python:
為對象動態(tài)添加函數(shù)
,
且函數(shù)定義
來自一個
str
在
Python
中
,
通常情況下
,
你只能為對象添加一個已經(jīng)寫好的方法
需求
:
傳入一個
str
類型的變量
,
其值是一個完整的合法的
Python
函數(shù)定義
,
然后為一個對象添
加這個函數(shù)
:
method_str
=
u
'''
def say(self, name)
print '
My
name
is
', name
'''
class
MyClass
:
def
__init__
(
self
):
pass
def
extends
(
self
,
method_name
,
method_str
):
#
完成這個方法
...
obj
=
MyClass
();
obj
.
extends
(
'say'
,
method_str
)
obj
.
say
(
'wendal'
)#
打印出
My name is wendal
想了不少路子
,
在
Python
的
群里面也得到不少靈感
,
最后順利實現(xiàn)
:
def
extends
(
sefl
,
method_name
,
method_str
):
#_method = None
exec
method_str
+
'''\n_method = %s'''
%
method_name
self
.
__dict__
[
method_name
]=
new
.
instancemethod
(
_method
,
self
,
None
)
簡單解釋一下
: method_str
在
exec
前
,
改變?yōu)?/p>
:
method_str
=
u
'''
def say(self, name)
print '
My
name
is
', name
_method = abc
然后
, exec
執(zhí)行后
,_method
變量就賦值為
say
函數(shù)接下來
,
就是
Python
的自省機制了
,
通過
new
模塊
,
生成特定對象
(
本例中是
self)
的實例方法最后
,
為特定對象添加
say
這個函數(shù)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的python类的成员函数_Python为类对象动态添加成员函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无精症导致不孕不育
- 下一篇: 成都大熊猫基地可以带吃的吗