# Classes, Objects and Instances
class Person:
def __init__(self, name, age): #constructor
if len(name) >= 3:
self.__name = name
else:
raise ValueError("Length")
self.__age = age
def person_print(self):
print(f"Name: {self.__name}, Age: {self.__age}")
class Address:
def __init__(self, zipcode, cityname): #constructor
self.__zipcode = zipcode
self.__cityname = cityname
def address_print(self):
print(f"Zip code: {self.__zipcode}, City: {self.__cityname}")
people = {
"p1": (Person("Picio Sporcus", 24), Address(9434, "Pisellonia")),
"p2": (Person("Mister P", 28), Address(434563, "Arraffagemme")),
"p3": (Person("Anna Foti", 21), Address(6500, "Roma"))
}
for key, (person, address) in people.items():
print(f"Person {key}:"), {person.person_print(), address.address_print()}
# print("p1 is:", p1)
# p2 = Person("Hello")
# p1.foo()
# print("Is p1 an instance of class Person?", isinstance(p1, Person))
# print("Is p1 an instance of class Person?", isinstance(p2, Person))
# print("Is p1 an instance of class Address?", isinstance(p1, Address))
# print("Value of Person object:", p1)
# print("Type of Person object:", type(p1))
# print("Value of Person object:", p2)
# print("Type of Person object:", type(p2))
# print(id(p1), id(p2))