我想使用基于参数传递的字符串的函数,如下所示。代码给出以下错误:AttributeError:' Obj'对象没有属性' funA'
funA和funB的功能是在fun中定义的,因为它们只在乐趣中使用
class Obj(object):
def __init__(self):
self.A = 2
self.B = 3
def fun(self, ar):
def funA(self):
print self.A
def funB(self):
x = self.B + 4
print self.B
for letter in ar:
name = 'fun' + letter
getattr(self, name)()
obj_instance = Obj()
obj_instance.fun(['A', 'B'])
答案 0 :(得分:1)
作为替代方案,您可以尝试以下代码。它使您有机会检查函数是否存在。
class Obj(object):
def __init__(self):
self.A = 2
self.B = 3
def fun(self, ar):
def funA():
print self.A
def funB():
x = self.B + 4
print self.B
print x
for letter in ar:
name = 'fun' + letter
if name in locals():
locals()[name]()
obj_instance = Obj()
obj_instance.fun(['A', 'B'])
答案 1 :(得分:0)
我不推荐它,但如果你真的需要它,那么你可以这样做:
import boto3
# Create SQS client
sqs = boto3.client('sqs',region_name='eu-west-1')
queue_url='https://sqs.eu-west-1.amazonaws.com/XXXX'
# Receive message from SQS queue
response = sqs.receive_message(
QueueUrl=queue_url,
AttributeNames=[
'SentTimestamp'
],
MaxNumberOfMessages=10,
MessageAttributeNames=[
'All'
],
VisibilityTimeout=0,
WaitTimeSeconds=0
)
exec()执行放在括号中的任何字符串,就像它是python代码一样。