Browse Source

initial commit of chapter 3 case study

master
T. Meissner 10 years ago
parent
commit
d21b24d951
1 changed files with 67 additions and 0 deletions
  1. +67
    -0
      python_3_oop/chapter03/real_estate.py

+ 67
- 0
python_3_oop/chapter03/real_estate.py View File

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

Loading…
Cancel
Save