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 2 Attributes and Methods Explained

9 2 Attributes and Methods Explained

Key Concepts

Attributes and methods are fundamental components of object-oriented programming (OOP) in Python. They define the state and behavior of objects, respectively.

1. Attributes

Attributes are variables that store data associated with an object. They define the state of the object.

Example:

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

my_car = Car("Toyota", "Camry")
print(my_car.make)  # Output: Toyota
print(my_car.model)  # Output: Camry
    

Analogy: Think of attributes as the characteristics of a person, such as their name, age, and height.

2. Methods

Methods are functions defined inside a class that perform actions on the object's attributes. They define the behavior of the object.

Example:

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

    def start_engine(self):  # Instance method
        print(f"The {self.make} {self.model}'s engine is starting.")

my_car = Car("Toyota", "Camry")
my_car.start_engine()  # Output: The Toyota Camry's engine is starting.
    

Analogy: Think of methods as the actions a person can perform, such as walking, talking, and eating.

3. Instance Attributes

Instance attributes are specific to each instance of a class. They are defined inside the constructor method (__init__).

Example:

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

car1 = Car("Toyota", "Camry")
car2 = Car("Honda", "Accord")

print(car1.make)  # Output: Toyota
print(car2.make)  # Output: Honda
    

Analogy: Think of instance attributes as unique traits of each person, such as their name and age.

4. Class Attributes

Class attributes are shared among all instances of a class. They are defined at the class level, outside any method.

Example:

class Car:
    wheels = 4  # Class attribute

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

car1 = Car("Toyota", "Camry")
car2 = Car("Honda", "Accord")

print(car1.wheels)  # Output: 4
print(car2.wheels)  # Output: 4
    

Analogy: Think of class attributes as common traits shared by all people, such as having two eyes and two ears.

5. Instance Methods

Instance methods are functions defined inside a class that operate on instance attributes. They are called on specific instances of the class.

Example:

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

    def start_engine(self):  # Instance method
        print(f"The {self.make} {self.model}'s engine is starting.")

my_car = Car("Toyota", "Camry")
my_car.start_engine()  # Output: The Toyota Camry's engine is starting.
    

Analogy: Think of instance methods as actions that a specific person can perform, such as singing a song or playing a sport.

6. Class Methods

Class methods are methods that operate on the class itself rather than on instances. They are decorated with @classmethod.

Example:

class Car:
    wheels = 4

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

    @classmethod
    def get_wheels(cls):  # Class method
        return cls.wheels

print(Car.get_wheels())  # Output: 4
    

Analogy: Think of class methods as actions that apply to all people, such as calculating the average height of a population.

7. Static Methods

Static methods are methods that do not operate on either the class or its instances. They are decorated with @staticmethod.

Example:

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

    @staticmethod
    def honk():  # Static method
        print("Beep beep!")

Car.honk()  # Output: Beep beep!
    

Analogy: Think of static methods as general actions that are not specific to any person or group, such as a universal greeting.

Putting It All Together

By understanding and using attributes and methods effectively, you can create powerful and flexible classes in Python. This is crucial for building complex and maintainable applications.

Example:

class Car:
    wheels = 4  # Class attribute

    def __init__(self, make, model):
        self.make = make  # Instance attribute
        self.model = model  # Instance attribute

    def start_engine(self):  # Instance method
        print(f"The {self.make} {self.model}'s engine is starting.")

    @classmethod
    def get_wheels(cls):  # Class method
        return cls.wheels

    @staticmethod
    def honk():  # Static method
        print("Beep beep!")

my_car = Car("Toyota", "Camry")
my_car.start_engine()  # Output: The Toyota Camry's engine is starting.
print(Car.get_wheels())  # Output: 4
Car.honk()  # Output: Beep beep!