A Pythonban nincsen nyelv által biztosított megoldás a sablonokra.
Mivel azonban a Python gyengén típusos nyelv, így az általános célú, generikus használhatóságú programkódok készítése igen elterjedt. Elősegíti az ilyen kódok írását továbbá az is, hogy a Python széleskörű osztály-tesztreszabást teszt lehetővé: könnyen írhatunk osztályunkhoz összehasonlítás operátort, vagy iterátor-támogatási műveletet. Az osztály-testreszabás lehetőségeiről az Objektum-orientált programozás fejezet "Speciális metódusok" részében olvashat. Fontos azonban megjegyezni, hogy ugyan a gyenge típusosság adta lehetőségek szinte végtelenek, ugyanakkor az e fajta generikusság nem ellenőrzött. Nem tehetünk például megszorításokat a paraméterek típusára, vagy a függvények használatára, és ez gyakran futásidejű hibához vezethet, ezáltal csökken a program megbízhatósága.
Készítsünk egy rendezett lista adatszerkezetet! A listába be lehet szúrni elemet, törölni lehet elemet, le lehet kérdezni a hosszát a len() beépített függvény segítségével, valamint ki lehet olvasni az első és utolsó elemét.
Látható a példából, hogy az OrderedList egyaránt működik egész számokkal és stringekkel is.
Mi a buktatója akkor ennek a fajta generikusságnak?
A legnagyobb baj az, hogy nincs lehetőség megszorítások kötésére. Vegyük észre, hogy a rendezés a beépített sort() függvénnyel történik. Ahhoz viszont, hogy két, ugyanolyan típusú elemet összehasonlítsunk, a típusnak implementálnia kell az összehasonlító függvényt, függvényeket. Beépített típusoknál ez adott, de a felhasználó által definiált típusoknál viszont nem mindig, és ilyenkor az objectID alapján történik az összehasonlítás. Jó lenne valahogy megszorítani, hogy a rendezett listánkba csak olyan típusú elemeket lehetne beszúrni, amin értelmezve van az összehasonlítás művelet.
Továbbá figyeljük meg az inicializáló metódust: az egy iterált paramétert vár, és ha kapott paramétert, akkor bejárja for ciklussal azt. No de mi van akkor, ha a kapott paraméter nem iterálható? A válasz egyszerű: futásidejű hiba keletkezne.
Tehát mivel a nyelv szintjén nem lehet megszorításokat tenni, ezért nekünk, programozóknak kell a programkódból kitalálni, hogy milyen megszorítáokkal használhatjuk csak az adott programot. Nyilvánvaló, hogy ez nem mindig sikerül, ami megbízhatatlan programkódhoz vezet(het)...
Tegyük fel, hogy a programunk ember entitásokkal dolgozik: feldolgozza az adataikat, statisztikákat számol, stb. Ilyenkor készítenénk egy 'Ember' osztályt, magasság, testsúly, nem: