
class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age


my_dog = Dog('Willie', 6)


print(my_dog.name) # Willie
print(my_dog.age) # 6


class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name} is now sitting.")

    def roll_over(self):
        print(f"{self.name} rolled over!")

my_dog = Dog('Willie', 6)
my_dog.sit() # Willie is now sitting.
my_dog.roll_over() # Willie rolled over!



my_dog = Dog('Willie', 6)
your_dog = Dog('Lucy', 3)

my_dog.sit() # Willie is now sitting.
your_dog.roll_over() # Lucy rolled over!


class Student:
    def __init__(self, name, major):
        self.name = name
        self.major = major
        self.credits = 0 # default value

    def show_info(self):
        print(f"{self.name} studies {self.major} and has {self.credits} credits.")

    def update_credits(self, new_value):
        if new_value >= 0:
            self.credits = new_value
        else:
            print("Credits cannot be negative!")

    def add_credits(self, amount):
        if amount > 0:
            self.credits += amount # same as self.credits = self.credits + amount
        else:
            print("Amount must be positive!")

student1 = Student('James', 2)
student1.credits = 20
student1.show_info() # James studies 2 and has 20 credits.

student1.update_credits(-20)


student1.add_credits(5)




""" The tasks for this session: 

1. Create the BankAccount class with owner and balance.

2. Add deposit() and withdraw() methods.

3. Add input validation (no negative deposits/withdrawals).

4. Add a method show_balance().

5. Track each transaction in a list.

6. Add account_number as an auto-assigned attribute.

7. Add transfer() between accounts.

8. Create multiple accounts and simulate transfers.

9. Add a method to summarize transaction history.
"""