Python is one of the most popular programming languages on the planet at the moment. At the heart of its appeal is its simple syntax and rich set of libraries.
It’s quite easy to write Python code, but it’s much harder to write high-quality Python code. How should you structure your code? How can you design for change, extensibility, consistency, and pluggability? How can you manage dependencies in a large code-base, so that your code is modular, stable, and manageable? How can you verify behaviour and type-safety?
This course shows how you can apply the “SOLID” principles to achieve all these goals.
Andy Olsen - author of the course
Andy is a freelance consultant and instructor based in the UK, working mostly in the City of London and Oxford. Andy has been working with .NET since the Beta 1 days and has extensive experience in many facets of .NET development including WCF, WPF, WF, ASP.NET MVC Web development, and mobile applications. Andy has designed and written many Microsoft Official Curriculum courses in the last decade, and has been engaged as author and technical reviewer with Apress on some of their biggest selling books.

Python Typing
- The need for Python typing
- Defining and verifying Python types
- What types are available
- Typing techniques
Object-Oriented Programming
- Essential Concepts
- Defining and Using a Class
- Class-Wide Members
The Single Responsibility Principle (SRP)
- Understanding the SRP
- Functional example of SRP
- OO example of SRP
The Open/Closed Principle (OCP)
- Understanding the OCP
- Achieving the OCP via inheritance
- Defining abstract classes/methods
- Multiple inheritance
- Understanding method resolution order
The Liskov Substitution Principle (LSP)
- Understanding the LSP
- Using the LSP
- Polymorphism
The Interface Segregation Principle (ISP)
- Setting the scene
- Interfaces in Python
- Interfaces and the ISP
The Dependency Inversion Principle (DIP)
- Setting the scene
- Dependency injection
- Managing dependencies with the DIP
Test Automation
- Getting started with testing
- Using PyHamcrest matchers
- Mocking
- Additional testing techniques
Using Pydantic
- Setting the scene
- Specifying simple validation rules
- Specifying complex validation rules

1. Hva lærer jeg på dette kurset?
Kurset gir deg en dypere forståelse av hvordan du skriver robust, modulær og skalerbar Python-kode ved å bruke SOLID-prinsippene i praksis. Du lærer blant annet å:
- Bruke Python typing for å sikre type-sikkerhet
- Strukturere kode med god objektorientert design
- Implementere SOLID-prinsippene (SRP, OCP, LSP, ISP, DIP)
- Redusere kompleksitet og avhengigheter i kodebaser
- Skrive testbar og vedlikeholdbar kode
- Bruke Pydantic for datavalidering og modelldesign
- Automatisere tester og sikre kvalitet gjennom hele utviklingsløpet
2. Hvem passer kurset for?
Kurset passer for:
- Python-utviklere som vil løfte kvaliteten på kodebasen sin
- Backend-utviklere som jobber i større prosjekter
- Arkitekter som ønsker en mer systematisk tilnærming til Python-design
- Team som vil forbedre struktur, modularitet og testbarhet
- DevOps- og software engineers som jobber med komplekse applikasjoner
3. Trenger jeg forkunnskaper?
Ja, du bør være komfortabel med Python-programmering og ha erfaring med å jobbe i litt større prosjekter eller applikasjoner.
4. Hva er hovedtemaene i kurset?
- Python typing og type-sikkerhet
Annotasjoner, typer, generics, Union/Optional, protokoller og type-verktøy.
- Objektorientert Python
Effektiv bruk av klasser, arv, komposisjon og abstraksjon.
SOLID-prinsippene i praksis
- SRP: Hvordan skrive klasser som kun har ett ansvar
- OCP: Hvordan gjøre kode utvidbar uten å endre eksisterende klasser
- LSP: Hvordan designe arv som faktisk fungerer
- ISP: Hvordan dele opp store interfacers i mindre, presise kontrakter
- DIP: Hvordan unngå tette avhengigheter og lage fleksible systemer
Testautomasjon
Beste praksis for strukturering av tester, mocking, testdoubles og integrasjonstesting.
Pydantic
Datavalidering, konvertering og modellering av input/output-data.
5. Er kurset praktisk?
Ja, kurset består av mange øvelser, blant annet:
- Refaktorering av kode etter SOLID
- Innføring av typer for økt trygghet
- Lage fleksible moduler som følger DIP
- Validere modeller med Pydantic
- Skrive tester og strukturere testmiljøet
- Håndtere avhengigheter i større kodebaser
6. Hvilke verktøy brukes?
Typiske verktøy i kurset inkluderer:
- Python 3.10+
- Pydantic
- Pytest
- Typing-modulen og mypy (eller tilsvarende)
- Et IDE som PyCharm eller VS Code
7. Får jeg kursbevis?
Ja, alle deltakere mottar kursbevis etter gjennomført kurs.
8. Hvorfor er kurset nyttig?
Fordi dårlig strukturerte Python-kodebaser fort blir vanskelige å vedlikeholde.
Dette kurset gir deg verktøyene til å:
- Redusere bugs
- Forbedre arkitektur
- Øke kvalitet og lesbarhet
- Forkorte utviklingstid
- Sikre trygg refaktorering
- Lage fleksible, skalerbare og testbare løsninger

See other courses to explore:
See course areas to explore: