Learn Python Programming
Start with getting started, installation, and core basics. Clear explanations and practical examples to help you learn faster.
Python Objects and Classes
A class is a blueprint for creating objects. Objects bundle data (attributes) and behavior (methods) together, enabling you to model real-world concepts in code.
Defining a Class
# Basic class definition
class Dog:
# Class attribute — shared by all instances
species = "Canis familiaris"
# Constructor — called when creating a new instance
def __init__(self, name, age):
# Instance attributes — unique to each object
self.name = name
self.age = age
# Instance method
def bark(self):
return f"{self.name} says Woof!"
# Another method
def description(self):
return f"{self.name} is {self.age} years old"
# Creating objects (instances)
dog1 = Dog("Rex", 3)
dog2 = Dog("Buddy", 5)
print(dog1.bark()) # Rex says Woof!
print(dog2.description()) # Buddy is 5 years old
print(dog1.species) # Canis familiaris
The __init__ Method and self
# self refers to the current instance
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner # instance attribute
self.balance = balance
self._transactions = [] # convention: _ prefix = "private"
def deposit(self, amount):
if amount <= 0:
raise ValueError("Deposit must be positive")
self.balance += amount
self._transactions.append(f"+{amount}")
return self # return self for method chaining
def withdraw(self, amount):
if amount > self.balance:
raise ValueError("Insufficient funds")
self.balance -= amount
self._transactions.append(f"-{amount}")
return self
def get_statement(self):
return f"{self.owner}: ${self.balance} | History: {self._transactions}"
# Usage
account = BankAccount("Alice", 1000)
account.deposit(500).withdraw(200) # method chaining
print(account.get_statement())
# Alice: $1300 | History: ["+500", "-200"]
Special (Dunder) Methods
# Dunder methods customize how objects behave with built-in operations
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
"""Developer-friendly string (for debugging)."""
return f"Point({self.x}, {self.y})"
def __str__(self):
"""User-friendly string (for print)."""
return f"({self.x}, {self.y})"
def __eq__(self, other):
"""Enable == comparison."""
return self.x == other.x and self.y == other.y
def __add__(self, other):
"""Enable + operator."""
return Point(self.x + other.x, self.y + other.y)
def __len__(self):
"""Enable len() — return distance from origin (as int)."""
return int((self.x**2 + self.y**2) ** 0.5)
p1 = Point(3, 4)
p2 = Point(1, 2)
print(p1) # (3, 4)
print(repr(p1)) # Point(3, 4)
print(p1 + p2) # (4, 6)
print(p1 == Point(3, 4)) # True
print(len(p1)) # 5
Class Methods and Static Methods
class Date:
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
def __str__(self):
return f"{self.year}-{self.month:02d}-{self.day:02d}"
@classmethod
def from_string(cls, date_string):
"""Alternative constructor — create from string."""
year, month, day = map(int, date_string.split("-"))
return cls(year, month, day)
@classmethod
def today(cls):
"""Alternative constructor — create from today."""
from datetime import date
d = date.today()
return cls(d.year, d.month, d.day)
@staticmethod
def is_valid(year, month, day):
"""Utility — does not need class or instance."""
return 1 <= month <= 12 and 1 <= day <= 31
# Usage
d1 = Date(2024, 6, 15)
d2 = Date.from_string("2024-12-25") # classmethod
d3 = Date.today() # classmethod
print(Date.is_valid(2024, 13, 1)) # False (staticmethod)
Properties (Getters and Setters)
class Temperature:
def __init__(self, celsius):
self.celsius = celsius # triggers the setter
@property
def celsius(self):
return self._celsius
@celsius.setter
def celsius(self, value):
if value < -273.15:
raise ValueError("Below absolute zero!")
self._celsius = value
@property
def fahrenheit(self):
return self._celsius * 9/5 + 32
temp = Temperature(25)
print(temp.celsius) # 25
print(temp.fahrenheit) # 77.0
temp.celsius = 100 # uses setter
# temp.celsius = -300 # raises ValueError
__init__initializes a new object;selfrefers to the current instance.- Use dunder methods (
__str__,__eq__,__add__) to make objects work with Python operators. - Use
@classmethodfor alternative constructors;@staticmethodfor utility functions. - Use
@propertyto add validation/logic to attribute access without changing the API. - Prefix attributes with
_to signal they are internal (convention, not enforced).
Frequently Asked Questions
Answers to common Python getting-started questions
Python Programming Tutorial — Learn Python from Scratch
Python is the world's most popular programming language for beginners, data science, AI/ML, web development, and automation. This tutorial teaches Python step-by-step with clear explanations and runnable code examples. You can try every example in our free Python Compiler without installing anything.
Each topic builds on the previous one, starting from installation and Hello World through advanced concepts like decorators, generators, and file I/O. Whether you are a complete beginner or refreshing specific skills, every page gives you immediately usable code.
What This Tutorial Covers
- Getting Started: Install Python, run online, Hello World
- Basics: Variables, data types, type conversion, input/output
- Operators: Arithmetic, comparison, logical, assignment
- Control Flow: if/elif/else, for loops, while, break/continue
- Data Structures: Lists, tuples, sets, dictionaries
- Strings: Methods, slicing, formatting, f-strings
- Functions: Parameters, return values, *args, **kwargs, scope
- OOP: Classes, objects, inheritance, polymorphism
- File I/O: Reading, writing, CSV, JSON handling
- Exceptions: try/except, custom exceptions, raise
- Advanced: List comprehensions, lambda, generators, decorators
- Modules: import, pip, packages, __name__ == "__main__"
Why Learn Python in 2026?
- #1 most popular language: Ranked first on TIOBE, Stack Overflow, and GitHub for multiple years running.
- AI and Data Science: The primary language for machine learning (TensorFlow, PyTorch, scikit-learn), data analysis (Pandas, NumPy), and AI development.
- Web development: Django and Flask power backends at companies like Instagram, Spotify, and Pinterest.
- Automation: Automate files, emails, web scraping, reports, and system administration tasks in minutes.
- Beginner-friendly: Clean syntax with enforced indentation makes code readable from day one — no curly braces or semicolons.
- Massive job market: Python developers are in high demand across tech, finance, healthcare, and research.
Python vs Other Languages
| Feature | Python | Java | JavaScript | C++ |
|---|---|---|---|---|
| Syntax | Very clean, readable | Verbose | Moderate | Complex |
| Typing | Dynamic, strong | Static, strong | Dynamic, weak | Static, strong |
| Speed | Slower (interpreted) | Fast (JIT) | Fast (V8 JIT) | Fastest (native) |
| Best For | AI/ML, data, automation | Enterprise, Android | Web frontend/backend | Systems, games |
| Learning Time | 2–4 weeks basics | 4–6 weeks basics | 3–4 weeks basics | 8–12 weeks basics |
How to Get Started
- Run Python online: Use our free Python Compiler — no installation needed.
- Install locally: Download Python 3 from
python.org(Windows/Mac) or useapt install python3(Linux). - Verify: Run
python3 --versionin your terminal to confirm installation. - Choose an editor: VS Code with Python extension (free), PyCharm Community (free), or Jupyter Notebook for data science.
- Follow this tutorial in order: Start from Introduction and work through each topic sequentially.
Frequently Asked Questions
No. Python is designed to be beginner-friendly. This tutorial starts from absolute zero and builds up gradually.
Python 3.10+ is recommended. Python 2 reached end-of-life in 2020. All examples in this tutorial use Python 3 syntax.
Basics (syntax, loops, functions) take 2–4 weeks. Intermediate (OOP, file I/O, modules) adds 3–4 weeks. Specialisation (Django, data science, ML) takes another 2–3 months.
Yes, completely free. No account, no sign-up. All topics and examples available without restriction.
Who Is This For?
Complete beginners choosing their first programming language. Students in CS courses needing a Python reference. Data analysts transitioning from Excel to Python (Pandas). Self-taught developers adding Python to their skill set. Professionals automating repetitive tasks. Anyone preparing for Python coding interviews.