get consultation

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)

  1. 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
    
  2. 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.")