diff --git a/python_3_oop/chapter03/real_estate.py b/python_3_oop/chapter03/real_estate.py new file mode 100644 index 0000000..dcf3419 --- /dev/null +++ b/python_3_oop/chapter03/real_estate.py @@ -0,0 +1,67 @@ +# python 3 oop - chapter 3 case study +# simple real estate application + + +class Property: + + def __init__(self, square_feet='', beds='', baths='', **kwargs): + super().__init__(**kwargs) + self.square_feet = square_feet + self.num_bedrooms = beds + self.num_baths = baths + + def display(self): + print("PROPERTY DETAILS") + print("================") + print("square footage: {}".format(self.square_feet)) + print("bedrooms: {}".format(self.num_bedrooms)) + print("bathrooms: {}".format(self.num_baths)) + print() + + @staticmethod # decorator form of the staticmethod constructor function + def prompt_init(): + return dict(square_feet=input("Enter the square feet: "), + beds=input("Enter number of bedrooms: "), + baths=input("Enter number of baths: ")) + + #prompt_init = staticmethod(prompt_init) + + +class Apartment(Property): + + # class variables + valid_laundries = ("coin", "ensuite", "none") + valid_balconies = ("yes", "no", "solarium") + + def __init__(self, balcony="", laundry="", **kwargs): + super().__init__(**kwargs) + self.balcony = balcony + self.laundry = laundry + + def display(self): + super().display() + print("APARTMENT DETAILS") + print("laundry: %s" % self.laundry) + print("has balcony: %s" % self.balcony) + + @staticmethod + def prompt_init(): + parent_init = Property.prompt_init() + laundry = get_valid_input("What laundry facilities does the property" + "have?", Apartment.valid_laundries) + balcony = get_valid_input("Does the property have a balcony?", + Apartment.valid_balconies) + parent_init.update({ + "laundry" : laundry, + "balcony" : balcony + }) + return parent_init + + + +def get_valid_input(input_string, valid_options): + input_string += " ({}) ".format(", ".join(valid_options)) + response = "" + while response.lower() not in valid_options: + response = input(input_string) + return response