Python Training , study and exam guide
1 Introduction to Python
1.1 What is Python?
1.2 History of Python
1.3 Features of Python
1.4 Python Applications
1.5 Setting up the Python Environment
1.6 Running Your First Python Program
2 Python Basics
2.1 Python Syntax and Indentation
2.2 Variables and Data Types
2.2 1 Numbers
2.2 2 Strings
2.2 3 Lists
2.2 4 Tuples
2.2 5 Sets
2.2 6 Dictionaries
2.3 Operators
2.3 1 Arithmetic Operators
2.3 2 Comparison Operators
2.3 3 Logical Operators
2.3 4 Assignment Operators
2.3 5 Membership Operators
2.3 6 Identity Operators
2.4 Input and Output
2.4 1 Input Function
2.4 2 Output Function
2.5 Comments
2.5 1 Single-line Comments
2.5 2 Multi-line Comments
3 Control Flow
3.1 Conditional Statements
3.1 1 If Statement
3.1 2 If-Else Statement
3.1 3 Elif Statement
3.1 4 Nested If Statements
3.2 Loops
3.2 1 For Loop
3.2 2 While Loop
3.2 3 Nested Loops
3.3 Loop Control Statements
3.3 1 Break Statement
3.3 2 Continue Statement
3.3 3 Pass Statement
4 Functions
4.1 Defining Functions
4.2 Function Arguments
4.2 1 Positional Arguments
4.2 2 Keyword Arguments
4.2 3 Default Arguments
4.2 4 Variable-length Arguments
4.3 Return Statement
4.4 Lambda Functions
4.5 Scope of Variables
4.5 1 Local Variables
4.5 2 Global Variables
4.6 Recursion
5 Data Structures
5.1 Lists
5.1 1 List Operations
5.1 2 List Methods
5.1 3 List Comprehensions
5.2 Tuples
5.2 1 Tuple Operations
5.2 2 Tuple Methods
5.3 Sets
5.3 1 Set Operations
5.3 2 Set Methods
5.4 Dictionaries
5.4 1 Dictionary Operations
5.4 2 Dictionary Methods
5.5 Advanced Data Structures
5.5 1 Stacks
5.5 2 Queues
5.5 3 Linked Lists
6 Modules and Packages
6.1 Importing Modules
6.2 Creating Modules
6.3 Standard Library Modules
6.3 1 Math Module
6.3 2 Random Module
6.3 3 DateTime Module
6.4 Creating Packages
6.5 Installing External Packages
7 File Handling
7.1 Opening and Closing Files
7.2 Reading from Files
7.2 1 read()
7.2 2 readline()
7.2 3 readlines()
7.3 Writing to Files
7.3 1 write()
7.3 2 writelines()
7.4 File Modes
7.5 Working with CSV Files
7.6 Working with JSON Files
8 Exception Handling
8.1 Try and Except Blocks
8.2 Handling Multiple Exceptions
8.3 Finally Block
8.4 Raising Exceptions
8.5 Custom Exceptions
9 Object-Oriented Programming (OOP)
9.1 Classes and Objects
9.2 Attributes and Methods
9.3 Constructors and Destructors
9.4 Inheritance
9.4 1 Single Inheritance
9.4 2 Multiple Inheritance
9.4 3 Multilevel Inheritance
9.5 Polymorphism
9.6 Encapsulation
9.7 Abstraction
10 Working with Libraries
10.1 NumPy
10.1 1 Introduction to NumPy
10.1 2 Creating NumPy Arrays
10.1 3 Array Operations
10.2 Pandas
10.2 1 Introduction to Pandas
10.2 2 DataFrames and Series
10.2 3 Data Manipulation
10.3 Matplotlib
10.3 1 Introduction to Matplotlib
10.3 2 Plotting Graphs
10.3 3 Customizing Plots
10.4 Scikit-learn
10.4 1 Introduction to Scikit-learn
10.4 2 Machine Learning Basics
10.4 3 Model Training and Evaluation
11 Web Development with Python
11.1 Introduction to Web Development
11.2 Flask Framework
11.2 1 Setting Up Flask
11.2 2 Routing
11.2 3 Templates
11.2 4 Forms and Validation
11.3 Django Framework
11.3 1 Setting Up Django
11.3 2 Models and Databases
11.3 3 Views and Templates
11.3 4 Forms and Authentication
12 Final Exam Preparation
12.1 Review of Key Concepts
12.2 Practice Questions
12.3 Mock Exams
12.4 Exam Tips and Strategies
9 Object-Oriented Programming (OOP) Explained

9 Object-Oriented Programming (OOP) Explained

Key Concepts

Object-Oriented Programming (OOP) in Python involves several key concepts:

1. Classes and Objects

A class is a blueprint for creating objects. An object is an instance of a class. Classes define the structure and behavior of objects.

Example:

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

    def bark(self):
        return "Woof!"

my_dog = Dog("Buddy", 3)
print(my_dog.name)  # Output: Buddy
print(my_dog.bark())  # Output: Woof!
    

Analogy: Think of a class as a cookie cutter and objects as the cookies it shapes.

2. Attributes and Methods

Attributes are variables that belong to an object. Methods are functions that belong to an object and define its behavior.

Example:

class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def start(self):
        return "Engine started!"

my_car = Car("Toyota", "Camry")
print(my_car.make)  # Output: Toyota
print(my_car.start())  # Output: Engine started!
    

Analogy: Think of attributes as the characteristics of a car (make, model) and methods as the actions it can perform (start, stop).

3. Inheritance

Inheritance allows a class to inherit attributes and methods from another class. The class that inherits is called the subclass, and the class being inherited from is called the superclass.

Example:

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        return "Animal sound"

class Cat(Animal):
    def speak(self):
        return "Meow!"

my_cat = Cat("Whiskers")
print(my_cat.name)  # Output: Whiskers
print(my_cat.speak())  # Output: Meow!
    

Analogy: Think of inheritance as a family tree, where children inherit traits from their parents.

4. Polymorphism

Polymorphism allows objects of different classes to be treated as objects of a common superclass. It enables methods to be overridden in subclasses.

Example:

class Dog(Animal):
    def speak(self):
        return "Woof!"

animals = [Cat("Whiskers"), Dog("Buddy")]
for animal in animals:
    print(animal.speak())
    

Analogy: Think of polymorphism as a universal remote that can control different devices, each with its own specific functions.

5. Encapsulation

Encapsulation is the practice of hiding the internal details of an object and only exposing a public interface. This is achieved using access modifiers like private and protected.

Example:

class BankAccount:
    def __init__(self, balance):
        self.__balance = balance

    def deposit(self, amount):
        self.__balance += amount

    def get_balance(self):
        return self.__balance

account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())  # Output: 1500
    

Analogy: Think of encapsulation as a capsule that hides the medicine inside, only allowing access through a specific opening.

6. Abstraction

Abstraction is the process of hiding complex implementation details and showing only the necessary features of an object. Abstract classes and methods are used to achieve abstraction.

Example:

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

circle = Circle(5)
print(circle.area())  # Output: 78.5
    

Analogy: Think of abstraction as a map that shows only the essential details, hiding the complexity of the terrain.

Putting It All Together

By understanding and using these concepts effectively, you can create robust and maintainable code using Object-Oriented Programming in Python.

Example:

class Vehicle:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def start(self):
        return "Engine started!"

class Car(Vehicle):
    def start(self):
        return "Car engine started!"

class Motorcycle(Vehicle):
    def start(self):
        return "Motorcycle engine started!"

vehicles = [Car("Toyota", "Camry"), Motorcycle("Harley", "Davidson")]
for vehicle in vehicles:
    print(vehicle.start())