|   | 666 |  | 
                  
                          |   | 667 | == RAZREDI IN UVOD V OBJEKTNO PROGRAMIRANJE == | 
                  
                          |   | 668 |  | 
                  
                          |   | 669 | Razredi so temeljni gradniki v Pythonu. Podobno, kot z besedno zvezo "def" definiramo funkcijo, z besedno zvezo "class" definiramo razred. [[BR]] | 
                  
                          |   | 670 | Torej kaj sploh je razred ? Razred je, preprosto povedano, logično združevanje podatkov, ter funkcij (slednje, ko so definirane v razredih, pogosto imenujemo tudi "metode"). V takem primeru z "logičnim združevanjem" mislimo predvsem na to, da v praksi, ko delamo z razredi, poskušamo v razrede združevati le tiste podatke in le tiste funkcije, kjer obstaja neka logična povezava med njimi (recimo, imamo razred Strojni_element, v katerem združujemo podatke o materialu, geometriji..., ter razne funkcije, recimo za preračun trdnosti itd. V ta isti razred pa ne bi vnesli podatkov o našem počutju, vremenu, ipd.). Teoretično namreč, v razrede lahko vnašamo bilo katere funkcije in kakršne koli podatke, vendar potem vse skupaj ne bi več imelo nekega smisla. Z razredi si poskušamo programiranje olajšati in ne otežiti. Poleg tega, velikokrat razredi temeljijo na objektih iz realnega sveta (recimo "Kupec", "Produkt", "Avto" ...). [[BR]] | 
                  
                          |   | 671 |  | 
                  
                          |   | 672 | Kljub vsemu povedanem so razredi tehnika modeliranja oz. način, kako mislimo o programih. Torej, ko programiramo na tak način, to je z razredi in objekti, rečemo, da izvajamo "objektno orientirano programiranje". | 
                  
                          |   | 673 |  | 
                  
                          |   | 674 | === First-class Everything === | 
                  
                          |   | 675 |  | 
                  
                          |   | 676 | Guido van Rossum (človek, ki je zasnoval Python) je Python udejanil po načelu "fist-class everyting", kar v bistvu pomeni da vse objekte, katere je v jeziku mogoče poimenovati imeli enak status (npr. integerji, nizi, slovarji, razredi...). Torej, to pomeni, da se vse v Pythonu obravnava enako, torej, vse je razred. | 
                  
                          |   | 677 |  | 
                  
                          |   | 678 | {{{ | 
                  
                          |   | 679 | #!python | 
                  
                          |   | 680 | # -*- coding: utf-8 -*- | 
                  
                          |   | 681 |  | 
                  
                          |   | 682 | x = 5 | 
                  
                          |   | 683 | print(type(x)) | 
                  
                          |   | 684 |  | 
                  
                          |   | 685 | y = 5.45 | 
                  
                          |   | 686 | print(type(y)) | 
                  
                          |   | 687 |  | 
                  
                          |   | 688 | def f(x): | 
                  
                          |   | 689 |     return x+1 | 
                  
                          |   | 690 | print(type(f)) | 
                  
                          |   | 691 |  | 
                  
                          |   | 692 | import math | 
                  
                          |   | 693 | print(type(math)) | 
                  
                          |   | 694 | }}} | 
                  
                          |   | 695 |  | 
                  
                          |   | 696 | Iz primera ugotovimo, da so tako funkcije, kot tudi tipi spremenljivk v bistvu zapisani v razredu oz. so del nekega razreda. | 
                  
                          |   | 697 |  | 
                  
                          |   | 698 | === Razredi so "načrti" za izdelavo objektov iz razreda === | 
                  
                          |   | 699 |  | 
                  
                          |   | 700 | Objekt združuje spremenljivke in funkcije v eno. Objekti dobijo svoje spremenljivke in funkcije iz razredov. Torej iz tega sledi, da so razredi v bistvu neke predloge oz. načrti za izgradnjo naših objektov, medtem, ko objekte, si lahko zamišljamo kot podatkovno strukturo, ki vsebuje tako podatke, kot tudi funkcije. | 
                  
                          |   | 701 |  | 
                  
                          |   | 702 | {{{ | 
                  
                          |   | 703 | #!python | 
                  
                          |   | 704 | # -*- coding: utf-8 -*- | 
                  
                          |   | 705 |  | 
                  
                          |   | 706 | class Moj_Razred: | 
                  
                          |   | 707 |     x = 5 | 
                  
                          |   | 708 |  | 
                  
                          |   | 709 |     def foo(self):   # Parameter "self" bomo obrazložili kasneje | 
                  
                          |   | 710 |         print("Pozdrav iz funkcije foo") | 
                  
                          |   | 711 |  | 
                  
                          |   | 712 | moj_objekt = Moj_Razred()  # Spremenljivka "moj_objekt" vsebuje/drži objekt razreda "Moj_Razred, katere vsebuje spremenljivke, ter "foo" funkcijo | 
                  
                          |   | 713 | }}} |