text: Print object not memory location
  How can I print the object and not the memory location to my list. I also added a patient Id generator to generator a patient records number for each patient that is created. It’s also shows as a memory location. Any advice on this or any of my code is welcome. Like do I need to have a default value of none for all my class variables in init?
  master_patient_list = [] current_patient_list = [] iso_patient_list = [] iso_type_dict = {'covid': 'droplets', 'cdiff': 'contact', 'tuberculosis': 'airborne', 'influenza': 'droplets', 'reverse isolation': 'patient saftey'} def count_patients(list): return len(list) class Patient (object): def __init__(self, name='',_type_dict self.patient_record_number = ''' first_digit = 0 second_digit = 0 third_digit = 0 for i in range(201): final_num = f'AD{third_digit}{second_digit}{first_digit}' #print(final_num) if first_digit < 10: first_digit += 1 if first_digit == 10: first_digit = 0 second_digit += 1 if second_digit == 10: second_digit = 0 third_digit += 1 yield final_num def __str__(self): return f'Room: {self.room_number} \nName: {self.name} \nPhysician: {self.assigned_doctor} \nNurse: {self.assigned_nurse} \nIllness: {self.illness} \nIso status: {self.iso_status} \nPRN: {self.patient_record') patient2 = Patient() patient2.name = 'Labrone' patient2.age = 40 patient2.room_number = 46208 patient2.assigned_doctor = 'Dr. Patel' patient2.assigned_nurse = 'Melissa' patient2.illness = 'Broken Heart' patient2.iso_status = '5150' patient2.patient_record_number patient2.add_med('norco') #test code print(patient1) print() print(patient2) print() print(f'Master list: \n{master_patient_list}') print() print(f'Current list: \n{current_patient_list}')
  Here’s the output...
  Room: 430
  Name: Sally
  Physician: Dr. Seuss
  Nurse: Jessica
  Illness: Broken Leg
  Iso status: NONE
  PRN: <generator object Patient.patient_id_gen at 0x11528b468>
  Medication: ['norco']
  Room: 46208
  Name: Labrone
  Physician: Dr. Patel
  Nurse: Melissa
  Illness: Broken Heart
  Iso status: 5150
  PRN: <generator object Patient.patient_id_gen at 0x115237bf8>
  Medication: ['norco']
  Master list:
  [<main.Patient object at 0x1154d8438>, <main.Patient object at 0x1154d86a0>]
  Current list:
  [<main.Patient object at 0x1154d8438>, <main.Patient object at 0x1154d86a0>]
  self.patient_record_number = next(self.patient_id_gen())
  @ccc thanks that worked for the Id. It now shows the object. Any ideas on how to show the objects in my list. Also the generator is generating the same number for both patients?
  This post is deleted!last edited by
  #!/usr/bin/env python3 # unique_identifier.py # To run these doctests, please do: `python3 -m doctest -v unique_identifier.py` from typing import Iterator def unique_id_generator(prefix: str = "AD") -> Iterator[str]: """ Generate unique identifiers one at a time as each new object is created. >>> unique_identifier_generator = unique_id_generator() >>> next(unique_identifier_generator) 'AD001' >>> next(unique_identifier_generator) 'AD002' >>> xy_identifier_generator = unique_id_generator("XY") >>> next(xy_identifier_generator) 'XY001' >>> next(unique_identifier_generator) 'AD003' """ first_digit = 0 second_digit = 0 third_digit = 0 for i in range(201): if first_digit < 10: first_digit += 1 if first_digit == 10: first_digit = 0 second_digit += 1 if second_digit == 10: second_digit = 0 third_digit += 1 yield f"{prefix}{third_digit}{second_digit}{first_digit}"
  The body of the function could be reduced to:
  current_identifier = 0 while current_identifier < 999: current_identifier += 1 yield f"{prefix}{current_identifier:03}" raise IndexError("{current_identifier} is our upper limit!")
  Classes should have a
  __repr__(self)method, which returns a
  str, which is what gets used when calling print, or typing the name at the console, or when printing lists, etc.
  You can thus decide how much detail you want to include -- do you want all info? Or just patient name, etc. There is also a
  __str__method which you can implement that returns a different representation, when you use
  str(myobject)... So you can have a short version used as repr, and a long version in str, or vice versa.
  @JonB nice. My patient class Has a str method Which prints out most of the patient details.. I’m gonna add a rep and it will be simple print out. Thanks. Adding a repr was the next path I was going to go down. I just thought I would ask her cause I didn’t want to have to research everything just to get it to print out. Thanks again
  @ccc your right. When I made the body of the function I was imagining 3 dials with the numbers 0 through 9 and as they rotate when first dial hit 9 the next dial would click over to 1 and the first dial change to 0. Like an odometer. I figured it out but I see now all I need is <999 += 1.
  I was watching a video and thinking of what you recommended and came up with this
  def patient_id_gen(): ''' generates patient id one at a time as patient object is created ''' prefix = 'AD' for i in range(1000,9999): yield f"{prefix}{i}"