Classes
Classes are the basic building blocks of a structured program. It provides for cleaner code. And for storing related data.
What is related data? A person's first name and last name is related.
classes.py
class Pets:
    def __init__(self):
        self.list_of_pets = []
    def get_menu_option(self):
        count = len(self.list_of_pets)
        option = input(f'{count} A)dd Pet  R)emove Pet  L)ist pets Q)uit:')
        return option
    
    def add_pet(self):
        pet_name = input('Enter pet name to add:')
        self.list_of_pets.append(pet_name)  
    def remove_pet(self): 
        pet_name = input('Enter pet name to remove:')
        self.list_of_pets.remove(pet_name)
    def list_pets(self):
        for pet in self.list_of_pets:
            print(pet)
    def run(self):
        while True:
            option = self.get_menu_option()
            match option:
                case 'a':
                    self.add_pet()
                case 'r':
                    self.remove_pet()
                case 'l':
                    self.list_pets()
                case 'q':
                    # exit the while loop
                    break
                case default:
                    print('Invalid option, try again')
pets = Pets()
pets.run()
print("Done.")
Output:
0 A)dd Pet R)emove Pet L)ist pets Q)uit:a Enter pet name to add:tootsie 1 A)dd Pet R)emove Pet L)ist pets Q)uit:a Enter pet name to add:fido 2 A)dd Pet R)emove Pet L)ist pets Q)uit:l tootsie fido 2 A)dd Pet R)emove Pet L)ist pets Q)uit:r Enter pet name to remove:tootsie 1 A)dd Pet R)emove Pet L)ist pets Q)uit:l fido 1 A)dd Pet R)emove Pet L)ist pets Q)uit:q Done.
Another Class
classes.py
class Television:
    def __init__(self):
        self.channel = 0
        self.volume = 0
        self.isOn = False
    def isOn(self):
        return self.isOn
    
    def turnOn(self):
        self.isOn = True
    def turnOff(self):
        self.isOn = False
    def currentVolume(self):
        return self.volume
    def increaseVolume(self):
        if self.volume < 100:
            self.volume = self.volume + 1
    def decreaseVolume(self):
        if self.volume > 0:
            self.volume = self.volume - 1
    def currentChannel(self):
        return self.channel
    def changeChannel(self,channel):
        if channel > 0 and channel < 50:
            self.channel = channel
tv = Television()
if tv.isOn() == False:
    tv.turnOn()
tv.changeChannel(3)
tv.increaseVolume()
tv.increaseVolume()
tv.increaseVolume()
tv.increaseVolume()
tv.turnOff()
print("Done.")
Links
Exercises (5 mins)
- 
        Complete the contact.py to match the output below. contact.py class Contact: def __init__(self): # initialize firstName and lastName to "" pass def getFullName(self): # return firstName with a space and lastName contact = Contact() contact.firstName = "Dave" contact.lastName = "Johnson" print(f'Your name is {contact.getFullName()}')Output: Your name is Dave Johnson 
- 
        Modify functions.py and create a money class. functions.py def get_menu_option(): option = input(f'${balance} A)dd Money S)ubtract Money Q)uit:') return option def get_money(): money = input('Enter amount:') return int(money) def add_money(): # you need access to the global balance global balance print('Add money') money = get_money() balance = balance + money def subtract_money(): # you need access to the global balance global balance print('Subtract money') money = get_money() balance = balance - money def invalid_option(): print('Invalid option, try again') balance = 0 # do the while loop forever while True: option = get_menu_option() match option: case 'a': add_money() case 's': subtract_money() case 'q': # exit the while loop break case default: invalid_option() print("Done.")

