Python报'Class object has no attribute 'get''自定义randomuser类问题求解
问题根源
.get()是Python字典类型的专属内置方法,你当前user_list中存储的是自定义randomuser类的实例对象,并非字典,自然不包含get方法,才会触发属性报错。
修复方案(按推荐优先级排序)
- 方案1:直接访问类实例的
dob属性(最符合OOP设计逻辑)
把排序代码行替换为:
你在类初始化时已经把出生日期赋值给了实例的user_list.sort(key=lambda x: x.dob)dob属性,直接访问即可,不需要绕字典方法。 - 方案2:调用类内部存储的
user_dict字典的get方法
如果你希望保留get的调用写法,也可以访问类里预存的字典属性:user_list.sort(key=lambda x: x.user_dict.get('dob')) - 方案3:给自定义类添加
get方法
如果需要让自定义类兼容字典的get调用逻辑,可以在randomuser类中补充方法:def get(self, key, default=None): return self.user_dict.get(key, default)
额外优化建议
Python类名推荐遵循PEP8规范使用大驼峰命名法,把randomuser改为RandomUser更符合行业通用写法,可读性更好。
内容的提问来源于stack exchange,提问作者nablanco
相关产品推荐
相关产品推荐

