| @ -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 | |||||