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
相关产品推荐
相关产品推荐

