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