another option would be to create new address class to hold those strings togetherand then pass an instance of this class into the __init__ method of our friend class the advantage of this solution is that we can add behavior (saya method to give directions or to print mapto the data instead of just storing it statically this is an example of compositionas we discussed in object-oriented design the "has arelationship of composition is perfectly viable solution to this problem and allows us to reuse address classes in other entities such as buildingsbusinessesor organizations howeverinheritance is also viable solutionand that' what we want to explore let' add new class that holds an address we'll call this new class "addressholderinstead of "addressbecause inheritance defines an is relationship it is not correct to say "friendis an "addressbut since friend can have an "addresswe can argue that "friendis an "addressholderlaterwe could create other entities (companiesbuildingsthat also hold addresses here' our addressholder classclass addressholderdef __init__(selfstreetcitystatecode)self street street self city city self state state self code code very simplewe just take all the data and toss it into instance variables upon initialization the diamond problem we can use multiple inheritance to add this new class as parent of our existing friend class the tricky part is that we now have two parent __init__ methods both of which need to be initialized and they need to be initialized with different arguments how do we do thiswellwe could start with naive approachclass friend(contactaddressholder)def __init__selfnameemailphone,streetcitystatecode)contact __init__(selfnameemailaddressholder __init__(selfstreetcitystatecodeself phone phone