Vegyünk például egy olyan osztályt, amelyből a három oldalhossz alapján háromszögeket mint példányokat tudunk előállítani. Ekkor az __init__ metódus az egyes oldalhosszakat fogadó három paraméterrel rendelkezik.
Egy háromszöget azonban nem csak a három oldalával adhatunk meg, hanem mondjuk egy oldalával és a rajta fekvő két szöggel, vagy két oldalával és a közöttük levő szöggel. Miként érhetjük el, hogy ugyanazon osztályban ezen adatokkal is tudjunk háromszögeket létrehozni?
A megoldást osztálymetódusok alkalmazásával érhetjük el. Minthogy az osztálymetódus magához az osztályobjektumhoz fér hozzá, így nem csak az attribútumait tudja befolyásolni, hanem az osztályt a metóduson belül meghívva példányosítani is tudunk, és e példány lehet az osztálymetódus visszatérési értéke. Az osztálymetódussal tehát lényegében egy olyan konstruktorfüggvényt tudunk megvalósítani, amely példányokat eredményez. Ezért ezeket – a hívható osztályobjektum mint konstruktortól való megkülönböztetéshez – példánygyártó metódusnak (factory method) is szokták nevezni.
Az alábbi programsorokban két példánygyártó metódussal kiegészítve látjuk a háromszögeket eredményező osztály definícióját. Az oldalakat a trigonometriából ismert szinusz és koszinusz tételek alapján számoljuk.
