Classes and Objects

Object-oriented programming with classes, inheritance, and methods

#classes #oop #objects #inheritance

Classes and Objects

Define custom data types with classes in Python.

Basic Class

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

    def greet(self):
        return f"Hello, I'm {self.name} and I'm {self.age} years old"

# Create instance
person = Person("Alice", 30)
print(person.greet())  # Hello, I'm Alice and I'm 30 years old

Class with Properties

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

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, value):
        if value < 0:
            raise ValueError("Radius cannot be negative")
        self._radius = value

    @property
    def area(self):
        return 3.14159 * self._radius ** 2

circle = Circle(5)
print(circle.area)  # 78.53975
circle.radius = 10
print(circle.area)  # 314.159

Inheritance

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

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

dog = Dog("Buddy")
cat = Cat("Whiskers")
print(dog.speak())  # Buddy says Woof!
print(cat.speak())  # Whiskers says Meow!

Class Methods and Static Methods

class MathUtils:
    PI = 3.14159

    @classmethod
    def circle_area(cls, radius):
        return cls.PI * radius ** 2

    @staticmethod
    def add(a, b):
        return a + b

print(MathUtils.circle_area(5))  # 78.53975
print(MathUtils.add(10, 20))  # 30

Dataclasses

from dataclasses import dataclass

@dataclass
class Product:
    name: str
    price: float
    quantity: int = 0

    def total_cost(self):
        return self.price * self.quantity

product = Product("Laptop", 999.99, 2)
print(product)  # Product(name='Laptop', price=999.99, quantity=2)
print(product.total_cost())  # 1999.98

Discover another handy tool from EditPDF.pro