adapter pattern existing system in the real worldthis can mean the difference between system that is stuck with cobol base and magnetic tape and one that moves with the times it also has the added bonus of allowing you to course correct more easily should you find that one or more design decisions you made early on were sub-optimal this design principle is called separation of concern (soc)and sooner or later you will either be very thankful you adhered to it or very sorry that you did not you have been warned let' follow our own advice and separate the retrieval of user information from the emailsender class user_ fetcher py class userfetcher(object)def __init__(source)self source source def fetch_users()with open(self source' 'as csv_filereader csv dictreader(csv_fileusers [ for row in readerreturn rows mail_sender py import csv import smtplib from email mime text import mimetext class mailer(object)def send(senderrecipientssubjectmessage)msg mimetext(messagemsg['subject'subject msg['from'sender msg['to'[recipientss smtplib smtp('localhost' send_message(recipients quit(