Python:如何调用字典中存储的Test对象的returnVal方法?
解决字典中对象方法调用的问题
别担心,这绝对是新手用字典存储对象时很容易踩的小坑,完全不是什么基础到不好意思问的问题😉
问题出在哪?
你直接写Tom.returnVal()的时候,Python会把Tom当成一个变量名来解析,但你根本没定义过名为Tom的变量——你存在字典里的是键为字符串"Tom"的对象,两者完全不是一回事,所以自然会报错。
正确的调用方式
你需要先通过字典的键(也就是"Tom")取出对应的Test实例,然后再调用它的returnVal()方法,有两种常见写法:
写法1:直接通过字典索引调用
class Test(object): def __init__(self,val): self.val=val def returnVal(self): return(self.val) # 注意:尽量别用dict当变量名,会覆盖Python内置的dict类型 user_dict = {} user_dict["Tom"] = Test(20) # 正确调用:先取字典里的对象,再调用方法 result = user_dict["Tom"].returnVal() print(result) # 输出20
写法2:先取出对象存为变量,再调用方法
如果需要多次调用这个对象的方法,先把它赋值给变量会更清晰:
# 从字典中取出Tom对应的对象 tom_obj = user_dict["Tom"] # 调用方法 result = tom_obj.returnVal() print(result) # 输出20
额外小提示
尽量不要用dict作为变量名哦,因为dict是Python自带的内置类型(用来创建字典的类),用它当变量名会覆盖掉原本的内置功能,后续如果想使用dict()创建字典就会出问题啦。
内容的提问来源于stack exchange,提问作者Xaeol
相关产品推荐
相关产品推荐

