observer pattern you knownortoni've been watching you --eddie murphydelirious if you did the object calisthenics exercise from you would have noticed how difficult it is to reduce the number of lines used in certain methods this is especially difficult if the object is too tightly coupled with number of other objectsi one object relies too much on its knowledge of the internals of the other objects as suchmethods have too much detail that is not strictly related to the method in question maybe this seems bit vague at the moment allow me to clarify say you have system where users are able to complete challengesand upon completion they are awarded pointsgain general experience pointsand also earn skills points for the skills used to complete the task every task needs to be evaluated and scored where relevant take moment and think about how you would implement such system once you have written down the basic architecturelook at the example that follows what we want is some way to keep track of the user credits earned and spentthe amount of experience the user has accumulated up until this pointas well as the scores that count toward earning specific badges or achievements you could think of this system as either some sort of habit-building challenge app or any rpg ever created task_completer py class task(object)def __init__(selfuser_type)self user user self _type _type (cwessel badenhorst badenhorstpractical python design patterns