【发布时间】:2019-09-19 01:59:23
【问题描述】:
我刚开始学习 Python。由于一些性能问题,我必须在我的一个 AWS Lambda 函数中将所有代码从 Java 切换到 Python。我正在使用 lambda 控制台提供的 IDE。
目前,我对 Python 中的类有点困惑。我阅读了许多教程,我认为我在 setter 和 getter 方法上所做的事情是正确的。这是我的代码:
class User:
def __init__(self, user):
self.username = user
def get_username(self):
return self.username
def set_username(self, user):
self.username = user
def lambda_handler(request, context):
user = User("thisisaname")
print("name of user is " + user.get_username)
user.set_username("whatever")
print("name of user is " + user.get_username)
return "executed"
当 lambda_handler 被调用时,我期望输出是
name of user is thisisname
name of user is whatever
但是,当我打印 user.get_username 的值时。抛出类型错误。我得到以下错误消息:
{ "errorMessage": "can only concatenate str (not \"method\") to str", "errorType": "TypeError", "stackTrace": [
" File \"/var/task/lambda_function.py\", line 28, in lambda_handler\n print(\"name of user is \" + user.get_username)\n" ] }
当我用 str(user.get_username) 包装它时,会打印方法描述。
name of user is <bound method User.get_username of <lambda_function.User object at 0x7f4d6a4cc4d0>>
name of user is <bound method User.get_username of <lambda_function.User object at 0x7f4d6a4cc4d0>>
【问题讨论】:
标签: python python-3.x