Updated 3.3 ReadingNote in .md file and HW8.py
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# Create a class that implements a context manager as described in 3.3.9.
|
||||
# The context manager should keep track of an array of banana emojis.
|
||||
# The class should be able to be used with with: so it adds a banana to the list, and upon exit, removes a banana from the list.
|
||||
|
||||
# class BananaManager:
|
||||
# def __init__(self, bananas):
|
||||
# self.bananas = bananas
|
||||
|
||||
# def __enter__(self):
|
||||
# self.bananas.append("🍌")
|
||||
# return self.bananas
|
||||
|
||||
# def __exit__(self, exc_type, exc_value, traceback):
|
||||
# self.bananas.pop()
|
||||
|
||||
# # Usage of the banana manager
|
||||
# banana_list = ["🍌", "🍌"]
|
||||
# print("Before with statement:", banana_list)
|
||||
|
||||
# with BananaManager(banana_list) as adding_bananas:
|
||||
# print("Inside with statement:", adding_bananas)
|
||||
|
||||
# print("After with statement:", banana_list)
|
||||
|
||||
|
||||
|
||||
# Questions: can you use a with block inside of another with block? (You might have to get creative for this to work.).
|
||||
# If you can make that work, how many bananas are in the list?
|
||||
|
||||
# class BananaManager:
|
||||
# def __init__(self, bananas):
|
||||
# self.bananas = bananas
|
||||
|
||||
# def __enter__(self):
|
||||
# self.bananas.append("🍌")
|
||||
# return self.bananas
|
||||
|
||||
# def __exit__(self, exc_type, exc_value, traceback):
|
||||
# self.bananas.pop()
|
||||
|
||||
# # Usage of the banana manager
|
||||
# banana_list = ["🍌", "🍌"]
|
||||
# print("Before with statement:", banana_list)
|
||||
|
||||
# with BananaManager(banana_list) as adding_bananas:
|
||||
# print("Inside first with statement:", adding_bananas)
|
||||
|
||||
# with BananaManager(adding_bananas) as inside_bananas:
|
||||
# print("Inside second with statement:", inside_bananas)
|
||||
|
||||
# print("After with statement:", banana_list)
|
||||
|
||||
|
||||
|
||||
# Another question: can you structure the program so that you can get the class to have more than 0 bananas *outside* of a with block?
|
||||
|
||||
class BananaManager:
|
||||
def __init__(self, bananas):
|
||||
self.bananas = bananas
|
||||
|
||||
def __enter__(self):
|
||||
self.bananas.append("🍌")
|
||||
return self.bananas
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
self.bananas.pop()
|
||||
|
||||
def outside_banana(self):
|
||||
self.bananas.append("🍌")
|
||||
|
||||
# Usage of the banana manager
|
||||
banana_list = ["🍌", "🍌"]
|
||||
print("Before with statement:", banana_list)
|
||||
|
||||
bananamanager = BananaManager(banana_list)
|
||||
bananamanager.outside_banana() # Add a banana outside of a with block
|
||||
print("Outside adding a banana:", banana_list)
|
||||
|
||||
with BananaManager(banana_list) as adding_bananas:
|
||||
print("Inside first with statement:", adding_bananas)
|
||||
|
||||
with BananaManager(adding_bananas) as inside_bananas:
|
||||
print("Inside second with statement:", inside_bananas)
|
||||
|
||||
print("After with statement:", banana_list)
|
||||
Reference in New Issue
Block a user