You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AttributeError:'Contact'对象无'print_entry'属性的报错原因与解决方法

报错原因与修复方案

报错产生原因

  • 直接触发错误的原因是你编写的Contact类没有实现下层固定代码调用的print_entry实例方法:print_directory函数遍历联系人列表时,会对每个联系人对象调用print_entry()方法输出单条联系人信息,该方法不存在就会抛出AttributeError。
  • 除此之外你的Contact类还缺少后续main函数调用的其他必要方法,修复print_entry后还会继续触发同类报错,缺失的方法包括set_first_name、set_title、get_cell_number、get_area_code,同时缺少存储头衔的实例属性。

修复方案

在现有Contact类中补全所有缺失的属性和方法即可,修复后的完整Contact类代码如下:

class Contact:
    def __init__(self,fname,lname,p_number):
        self.fname = fname
        self.lname = lname
        self.p_number = p_number
        self.title = "" # 新增存储头衔的属性
    
    # 原有get方法保留
    def getfname(self):
        return self.fname
    
    def getlname(self):
        return self.lname
    
    def getp_number(self):
        return self.p_number
    
    # 新增缺失的print_entry方法,输出单条联系人信息
    def print_entry(self):
        # 有头衔就输出头衔,没有就只输出姓名+电话
        if self.title:
            print(f"{self.title} {self.fname} {self.lname}: {self.p_number}")
        else:
            print(f"{self.fname} {self.lname}: {self.p_number}")
    
    # 新增修改名字的方法
    def set_first_name(self, new_fname):
        self.fname = new_fname
    
    # 新增设置头衔的方法
    def set_title(self, title):
        self.title = title
    
    # 新增获取电话号码的方法
    def get_cell_number(self):
        return self.p_number
    
    # 新增获取区号的方法,取号码前3位
    def get_area_code(self):
        return self.p_number[:3]

修复后运行代码即可正常输出两次联系人列表,以及最后的区号查询结果。

内容的提问来源于stack exchange,提问作者Phillip Hackley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:45:01