我在一個類中定義了一些功能的如何將一個成員函數名稱賦值給一個函數對象?
,並在A級,我有一個功能,通過它們的名字來調用其他功能
但是當我使用eval('funcname')
,它說的功能是not defined
如何評估成員函數名稱是一個函數對象?
我在一個類中定義了一些功能的如何將一個成員函數名稱賦值給一個函數對象?
,並在A級,我有一個功能,通過它們的名字來調用其他功能
但是當我使用eval('funcname')
,它說的功能是not defined
如何評估成員函數名稱是一個函數對象?
從你的問題中不完全清楚,但它聽起來像你問如何從該類中的另一個方法名稱調用類中的一個方法。
因爲所有的實例方法有self
參數,你可以簡單地查找您通過getattr
想在該方法:
def call_by_name(self, method_name):
method = getattr(self, method_name)
method()
以下的工作,但你爲什麼要這麼做?
class A(object):
def __init__(self):
pass
def fa(self):
print('Hello')
def fb(self):
# self.fa()
eval('self.fa()')
a = A()
a.fb()
我希望它是有用的,
如果你想在這裏調用一個實例方法是這樣的
class A:
def foo(self):
print " ok"
return "ok"
def bar(self):
#i = A()
#print eval('i.foo()')
print eval('self.foo()')
a = A()
a.bar()
的方法是實例屬性而不是類的屬性,所以我們要僅通過實例調用 方法。
但它說「AttributeError:XXX實例沒有屬性'xxx'」 – 2013-04-10 09:36:29
那麼,它是否具有該屬性?展示一個真實的例子。 – 2013-04-10 09:37:36
我付出的原因是被調用的函數是一個私有函數,但我不知道爲什麼? – 2013-04-10 09:46:05