Classes & Modules
Python classes, modules, packages, and object-oriented patterns.
Class
class Person:
def __init__(self, name: str, birth_year: int):
self.name = name
self.birth_year = birth_year
@property
def age(self) -> int:
from datetime import date
return date.today().year - self.birth_year
def __repr__(self) -> str:
return f"Person({self.name!r})"
p = Person("Ada", 1985)
print(p.name) # Ada
print(p.age) # 41
Class Methods & Static Methods
class Person:
@classmethod
def from_dict(cls, data: dict):
return cls(data["name"], data["birth_year"])
@staticmethod
def is_adult(age: int) -> bool:
return age >= 18
Inheritance
class Employee(Person):
def __init__(self, name, birth_year, company):
super().__init__(name, birth_year)
self.company = company
Modules
A .py file is a module. A directory with __init__.py is a package.
# myapp/models.py
class User:
...
# myapp/__init__.py
from .models import User
# Usage
from myapp.models import User
from myapp import User
import myapp
myapp.User(...)
Common Patterns
# Conditional import
try:
import orjson as json
except ImportError:
import json
# __all__ controls `from module import *`
__all__ = ["Person", "Employee"]
Next: Back to Python overview