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

Python新手求助:打印Patient对象未得到预期信息问题排查

解决Python打印Patient对象输出内存地址的问题

问题根源

直接打印Python对象时,默认会调用对象的__repr__或__str__方法的默认实现,输出类名和内存地址,这就是你看到<Assignment4Q1PatientClass2nd.Patient object at 0x000002429E038A00>的原因。要输出预期的患者信息,需要在Patient类中自定义__str__方法,指定打印对象时的字符串格式。

另外你的代码里还有两个小问题:getPatientEName和getPatientEPhone方法多了不必要的参数,调用时会触发错误,需要删除这些多余参数;getPatientZipcode方法中,传入的zipcode是数字类型,直接和字符串拼接会报错,需要转成字符串。

修改后的Patient类代码

class Patient:
    
    def __init__(self, fname, mname, lname, address, city, state, zipcode, phone, ename, ephone):
        self._fname = fname       #first name
        self._mname = mname       #middle name
        self._lname = lname       #last name
        self._address = address   #address
        self._city = city         #city for address
        self._state = state       #state for address
        self._zipcode = zipcode   #zipcode for address
        self._phone = phone       #phone number
        self._ename = ename       #emergency name
        self._ephone = ephone     #emergency phone
        
    #add patient information    
    def addFirstName(self, firstname):
        self._fname = self._fname + firstname 
    def addMiddleName(self, middlename):
        self._mname = self._mname + middlename 
    def addLastName(self, lastname):
        self._lname = self._lname + lastname
    def addAddress(self, locaddress):
        self._address = self._address + locaddress
    def addCity(self, cityname):
        self._city = self._city + cityname 
    def addState(self, statename):
        self._state = self._state + statename
    def addZipcode(self, zipcodenum):
        self._zipcode = self._zipcode + zipcodenum
    def addPhone(self, phonenum):
        self._phone = self._phone + phonenum
    def addEName(self, emergencyname):
        self._ename = self._ename + emergencyname
    def addEPhone(self, emergencyphone):
        self._ephone = self._ephone + emergencyphone
        
    #get/return all information of the Patient
    def getPatientFirstName(self):
        return "First Name:" + self._fname
    def getPatientMiddleName(self):
        return "Middle Name:" + self._mname
    def getPatientLastName(self):
        return "Last Name:" + self._lname 
    def getPatientAddress(self):
        return "Address:" + self._address  
    def getPatientCity(self):
        return "City:" + self._city 
    def getPatientState(self):
        return "State:" + self._state
    def getPatientZipcode(self):
        return "ZIP:" + str(self._zipcode)   # 数字转字符串避免拼接错误
    def getPatientPhone(self):
        return "Phone:" + self._phone 
    def getPatientEName(self):  # 移除多余参数
        return "Emergency Contact:" + self._ename 
    def getPatientEPhone(self):  # 移除多余参数
        return "Emergency Phone:" + self._ephone
    
    # 自定义打印对象时的输出格式
    def __str__(self):
        patient_info = [
            self.getPatientFirstName(),
            self.getPatientMiddleName(),
            self.getPatientLastName(),
            self.getPatientAddress(),
            self.getPatientCity(),
            self.getPatientState(),
            self.getPatientZipcode(),
            self.getPatientPhone(),
            self.getPatientEName(),
            self.getPatientEPhone()
        ]
        return '\n'.join(patient_info)

效果说明

修改后运行第二个文件,会输出格式化后的患者信息:

First Name:James
Middle Name:Edward
Last Name:Jones
Address:345 Main Street
City:Billings
State:Montanna
ZIP:59000
Phone:406-555-1212
Emergency Contact:Jenny Jones
Emergency Phone:406-555-1213

内容的提问来源于stack exchange,提问作者J G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:25:23