- Alias
- and operator
- append()
- Booleans
- Classes
- Code block
- Comments
- Conditions
- Console
- datetime module
- Dictionaries
- enum
- enumerate() function
- Equality operator
- False
- Float
- For loop
- Formatted strings
- Functions
- Greater than operator
- Greater than or equal to operator
- If statement
- in operator
- Index
- Indices
- Inequality operator
- insert()
- Integer
- Less than operator
- Less than or equal to operator
- List sort() method
- Lists
- map() function
- Match statement
- Modules
- None
- or operator
- Parameter
- pop()
- print() function
- range() function
- Regular expressions
- requests Library
- Return
- round() function
- Sets
- String
- String join() method
- String replace() method
- String split() method
- The not operator
- time.sleep() function
- True
- try...except statement
- Tuples
- Variables
- While loop
PYTHON
Python Class: Creating and Using Classes in Python
A class in Python defines a blueprint for creating objects. This concept is central to object-oriented programming (OOP) and helps manage and organize code efficiently.
How to Use Classes in Python
Python Creating a Class
To create a class in Python, use the class
keyword followed by the class name and a colon.
Classes often include methods like the constructor, which sets initial values for class attributes. This structure provides a clear and organized way to define the behavior and properties of your objects.
class MyClass:
def __init__(self, attribute1, attribute2):
self.attribute1 = attribute1
self.attribute2 = attribute2
def my_method(self):
return f"Attributes are: {self.attribute1} and {self.attribute2}"
class
: The keyword in Python to define a class.MyClass
: The name of the class, typically using the CapWords convention (capitalizing every word, including the first word).__init__
: The constructor method to set the initial state.attribute1
,attribute2
: Attributes of the class, often referred to as instance variables.my_method
: A class method that operates on the class data.
Python Creating Instances of Classes
To create a new object from a class, call the class as if it were a function, passing any required arguments to the constructor. This instantiation process allows you to create multiple objects from the same class, each with its own unique set of data.
my_object = MyClass("value1", "value2")
MyClass
: The class to create an instance from.my_object
: The name of the new object to create from the class.
When to Use Python Classes
Classes in Python programming are useful for grouping behavior and data. They provide a structured way to define and organize the properties and behaviors that different objects should have.
Encapsulation of Data and Methods
You can use classes to group related data and methods. This makes your code easier to manage and helps prevent accidental changes. Encapsulation also helps you keep the class implementation details hidden from the outside world.
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def display_info(self):
return f"{self.title} by {self.author}"
Modeling the Real World
You can use classes to resemble the real world in your application. This approach is beneficial for applications that simulate real-world systems, such as inventory management or customer tracking. Creating a class for each entity ensures that your application accurately represents and manages these entities.
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
def car_details(self):
return f"{self.year} {self.make} {self.model}"
Inheritance for Code Reuse
Classes allow for inheritance, allowing new classes to extend existing classes. This promotes code reuse and reduces unnecessary repetition. Inheritance helps you build a hierarchy of classes that share common functionality while allowing for specialized behavior in subclasses.
class ElectricCar(Car):
def __init__(self, make, model, year, battery_size):
super().__init__(make, model, year)
self.battery_size = battery_size
def battery_info(self):
return f"Battery size: {self.battery_size} kWh"
Python Class Examples
Customer Database Application
A customer database application might use classes to handle customer records. Each customer can be an instance of a Customer
class, with Python class methods to update contact information or check purchase history.
class Customer:
def __init__(self, customer_id, name, email):
self.customer_id = customer_id
self.name = name
self.email = email
self.purchase_history = []
def update_email(self, new_email):
self.email = new_email
def add_purchase(self, item, amount):
self.purchase_history.append({'item': item, 'amount': amount})
def get_purchase_history(self):
return self.purchase_history
customer1 = Customer(1, "Alice", "alice@example.com")
customer1.update_email("alice.new@example.com")
customer1.add_purchase("Laptop", 1200)
print(customer1.get_purchase_history()) # Outputs: [{'item': 'Laptop', 'amount': 1200}]
Inventory Management System
An inventory management system might use classes to represent items in stock. Each item can be an instance of an InventoryItem
class, with methods to update stock levels or retrieve item details.
class InventoryItem:
def __init__(self, item_id, name, quantity):
self.item_id = item_id
self.name = name
self.quantity = quantity
def update_quantity(self, new_quantity):
self.quantity = new_quantity
def item_details(self):
return f"ID: {self.item_id}, Name: {self.name}, Quantity: {self.quantity}"
item1 = InventoryItem(101, "Laptop", 50)
item1.update_quantity(45)
print(item1.item_details()) # Outputs: 'ID: 101, Name: Laptop, Quantity: 45'
Game Characters
In game development, classes can define properties and actions of characters, enhancing reusability and scalability. By defining game characters as classes, you can easily create multiple characters with shared behaviors and attributes, while allowing for unique characteristics.
class Character:
def __init__(self, name, health, attack_power):
self.name = name
self.health = health
self.attack_power = attack_power
def attack(self):
return f"{self.name} attacks with power {self.attack_power}"
hero = Character("Warrior", 100, 75)
print(hero.attack()) # Outputs: 'Warrior attacks with power 75'
E-commerce Platform
An e-commerce platform might use classes to handle orders. Each order can be an instance of an Order
class, with Python class methods to add items, calculate the total price, and retrieve order details.
class Order:
def __init__(self, order_id, customer):
self.order_id = order_id
self.customer = customer
self.items = []
def add_item(self, item_name, price, quantity):
self.items.append({'item_name': item_name, 'price': price, 'quantity': quantity})
def total_price(self):
return sum(item['price'] * item['quantity'] for item in self.items)
def order_details(self):
return {'order_id': self.order_id, 'customer': self.customer, 'items': self.items, 'total': self.total_price()}
order1 = Order(1, "Alice")
order1.add_item("Laptop", 1200, 1)
order1.add_item("Mouse", 25, 2)
print(order1.order_details()) # Outputs order details with total price
Learn More About Python Classes
Python Class Variables and Instance Variables
In Python, class variables are useful for attributes that are the same for all instances. On the other hand, instance variables represent data that varies between instances.
class Teacher:
school_name = "Green Valley High"
def __init__(self, name):
self.name = name
teacher1 = Teacher("Mrs. Smith")
teacher2 = Teacher("Mr. Johnson")
print(Teacher.school_name) # Outputs: 'Green Valley High'
print(teacher1.name) # Outputs: 'Mrs. Smith'
Python Abstract Classes
Abstract classes in Python provide a way to define common interfaces for a group of related classes. You can define an abstract class using the abc
module. Abstract classes only serve as templates for other classes, so you can’t create instances of them. By using abstract classes, you can ensure that subclasses implement certain methods, providing a consistent interface.
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def sound(self):
pass
class Dog(Animal):
def sound(self):
return "Bark"
class Cat(Animal):
def sound(self):
return "Meow"
dog = Dog()
cat = Cat()
print(dog.sound()) # Outputs: 'Bark'
print(cat.sound()) # Outputs: 'Meow'
Python Enum Classes
Enum classes define a set of named values, reducing the possibility of invalid values. Enums are useful for representing fixed sets of related constants, such as days of the week or status codes.
from enum import Enum
class Status(Enum):
NEW = 1
IN_PROGRESS = 2
COMPLETED = 3
print(Status.NEW) # Outputs: 'Status.NEW'
Class Decorators and Properties
You can use class decorators and properties to enhance class functionality. Decorators can modify class behavior. Properties provide a way to define methods you can access like attributes.
class Student:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
@property
def full_name(self):
return f"{self.first_name} {self.last_name}"
student1 = Student("John", "Doe")
print(student1.full_name) # Outputs: 'John Doe'
Passing Class Objects to Functions
You can pass class objects to functions to manipulate object data outside the class. This approach allows you to create functions that operate on class instances, enhancing modularity and reusability.
def print_book_info(book):
print(book.display_info())
book_example = Book("The Great Gatsby", "F. Scott Fitzgerald")
print_book_info(book_example) # Outputs: 'The Great Gatsby by F. Scott Fitzgerald'
Python Class Inheritance and Subclassing
Inheritance allows you to create a new class based on an existing class. This helps create a logical class hierarchy and reuse common behavior.
class Human:
def speak(self):
return "Speaking..."
class Child(Human):
def play(self):
return "Playing..."
child = Child()
print(child.speak()) # Outputs: 'Speaking...'
print(child.play()) # Outputs: 'Playing...'
Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.