在python类中,以参数传递函数名的用法求解~!
作为一个python新人,小弟想自己写一个简单的验证类来练练手~!如下
class validate():
def __init__(self):
self.token = True
self.res = ''
self.message = []
# self._func = {'aw':self.aw,'ae':self.ae}
def Add(self, data=None, name=None, condition=None):
self.data = data
self.name = name
for x in condition:
#self._func.get(x)
if self.x():
print '成功调用函数'
else:
print '调用失败'
def IsEmpty(self):
pass
调用方法:
valid = validate()
valid.Add( abc,'提示名称abc', ['IsEmpty','IsNumber'] )
======================
我的目的是把需要验证的方法 IsEmpty,IsNumber当做参数传入,循环执行目标函数达到按照需求完成验证~!
但是这里出了一个问题就是 循环中 以x拿到IsEmpty字符串后 无法在self的对象中调用~!
self.x() 这样报错,直接查找了x函数而不是其所对应的 IsEmpty函数 除了使用我上面注释的 这种方法,我使用eval()能够把x变成需要的IsEmpty,但是又无法使用self.eval()这种写法,直接IsEmpty函数则表示找不到
有没有能够直接调用内部函数的使用方法,求大神指点迷津~!
------解决思路----------------------
# -*- coding: utf-8 -*-
class validate():
def __init__(self):
self.token = True
self.res = ''
self.message = []
def Add(self, data=None, name=None, condition=None):
self.data = data
self.name = name
for x in condition:
try:
func = getattr(self,x)
func()
print '成功调用函数'
except AttributeError:
print '调用失败'
def IsEmpty(self):
pass
valid = validate()
valid.Add('abc','提示名称abc', ['IsEmpty','IsNumber'] )