as expectedwhenever we print the stringeach bold character is preceded by charactereach italic character by characterand each underlined character by character all our functions seem to workand we can modify characters in the list after the fact we have working rich text document object that could be plugged into proper user interface and hooked up with keyboard for input and screen for output naturallywe' want to display real bolditalicand underlined characters on the screeninstead of using our __str__ methodbut it was sufficient for the basic testing we demanded of it exercises we've looked at various ways that objectsdataand methods can interact with each other in an object-oriented python program as usualyour first thoughts should be how you can apply these principles to your own work do you have any messy scripts lying around that could be rewritten using an object-oriented managerlook through some of your old code and look for methods that are not actions if the name isn' verbtry rewriting it as property think about code you've written in any language does it break the dry principleis there any duplicate codedid you copy and paste codedid you write two versions of similar pieces of code because you didn' feel like understanding the original codego back over some of your recent code now and see whether you can refactor the duplicate code using inheritance or composition try to pick project you're still interested in maintainingnot code so old that you never want to touch it again it helps keep your interest up when you do the improvementsnowlook back over some of the examples we saw in this start with the cached web page example that uses property to cache the retrieved data an obvious problem with this example is that the cache is never refreshed add timeout to the property' getterand only return the cached page if the page has been requested before the timeout has expired you can use the time module (time time(an_old_time returns the number of seconds that have elapsed since an_old_timeto determine whether the cache has expired now look at the inheritance-based zipprocessor it might be reasonable to use composition instead of inheritance here instead of extending the class in the zipreplace and scalezip classesyou could pass instances of those classes into the zipprocessor constructor and call them to do the processing part implement this