{"id":92073,"date":"2022-10-12T13:15:48","date_gmt":"2022-10-12T18:15:48","guid":{"rendered":"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/"},"modified":"2022-10-12T13:15:48","modified_gmt":"2022-10-12T18:15:48","slug":"hur-man-anvander-objektorienterad-programmering-i-python","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/","title":{"rendered":"Hur man anv\u00e4nder objektorienterad programmering i Python"},"content":{"rendered":"<div>\n<p>Objektorienterad programmering (OOP) \u00e4r en form av programmering centrerad kring objekt: sm\u00e5 enheter som kombinerar data och kod.  Simula var det f\u00f6rsta OOP-spr\u00e5ket som skapades f\u00f6r simulering av fysiska modeller.  Med OOP kan du definiera klasser som fungerar som mallar f\u00f6r objekt av specifika typer.<\/p>\n<p>K\u00e4rnelementen i OOP \u00e4r klasser, objekt, metoder och attribut.  OOP anv\u00e4nder dessa element f\u00f6r att uppn\u00e5 grundl\u00e4ggande m\u00e5l: inkapsling, abstraktion, arv och polymorfism.<\/p>\n<p>Python har utm\u00e4rkt st\u00f6d f\u00f6r objektorienterad programmering.  Om du undrar \u00f6ver OOP eller hur man anv\u00e4nder det i Python, l\u00e4s vidare f\u00f6r detaljer.<\/p>\n<h2 id=\"what-is-object-oriented-programming-in-python\"><span class=\"ez-toc-section\" id=\"Vad_ar_objektorienterad_programmering_i_Python\"><\/span>  Vad \u00e4r objektorienterad programmering i Python?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Python \u00e4r ett allm\u00e4nt programmeringsspr\u00e5k som st\u00f6der objektorienterad programmering.  Dess centrala infrastruktur syftar till objekt- och klassbyggande applikationer eller design.  Att anv\u00e4nda OOP g\u00f6r Python-koden renare och tydligare.  Det ger ocks\u00e5 enklare underh\u00e5ll och kod\u00e5teranv\u00e4ndning.<\/p>\n<p>H\u00e4r \u00e4r ett exempel som visar varf\u00f6r du ska anv\u00e4nda OOP i Python.<\/p>\n<pre>jeans = [30, true, \"Denim\", 59]<\/pre>\n<p>I det h\u00e4r exemplet inneh\u00e5ller jeans en lista med v\u00e4rden som representerar priset, om varan \u00e4r p\u00e5 rea, dess material och kostnad.  Detta \u00e4r en icke-OOP-metod och orsakar vissa problem.  Det finns till exempel ingen f\u00f6rklaring till det<strong> <\/strong><strong>jeans[0] <\/strong>avser storlek.  Detta \u00e4r mycket ointuitivt j\u00e4mf\u00f6rt med en OOP-metod som skulle h\u00e4nvisa till ett namngivet f\u00e4lt: <strong>jeans.stl<\/strong>.<\/p>\n<p>Den h\u00e4r exempelkoden \u00e4r inte s\u00e4rskilt \u00e5teranv\u00e4ndbar eftersom beteendet den f\u00f6rlitar sig p\u00e5 inte g\u00e5r att uppt\u00e4cka.  Med OOP kan du skapa en klass f\u00f6r att undvika detta problem.<\/p>\n<h2 id=\"how-to-define-a-class-in-python\"><span class=\"ez-toc-section\" id=\"Hur_man_definierar_en_klass_i_Python\"><\/span>  Hur man definierar en klass i Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>F\u00f6r att skapa en klass i Python, anv\u00e4nd nyckelordet \u201cklass\u201d f\u00f6ljt av ditt valda namn.  H\u00e4r \u00e4r ett exempel som definierar en klass med namnet <strong>Min klass<\/strong>.<\/p>\n<pre>class MyClass:<br\/>x = 2<p>p1 = MyClass()<br\/>print(p1.x)<\/p><\/pre>\n<p>L\u00e5t oss definiera en klass, <strong>Fl\u00e4mta<\/strong>, f\u00f6r att representera olika typer av byxor.  Den h\u00e4r klassen kommer att inneh\u00e5lla storlek, reastatus, material och pris.  Som standard initieras dessa v\u00e4rden till Ingen.<\/p>\n<pre>class Pant:<br\/><em># Define the properties and assign None value<\/em> <br\/>size = None<br\/>onsale = None<br\/>material = None<br\/>price = None<\/pre>\n<h2 id=\"how-to-create-an-object-in-python\"><span class=\"ez-toc-section\" id=\"Hur_man_skapar_ett_objekt_i_Python\"><\/span>  Hur man skapar ett objekt i Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>L\u00e5t oss nu initiera ett objekt fr\u00e5n klassen Pant.  F\u00f6rst kommer vi att definiera initialiseringsmetoden som har det f\u00f6rdefinierade namnet<strong> _i det_<\/strong>.  N\u00e4r du v\u00e4l har definierat det kommer Python automatiskt att anropa den h\u00e4r metoden n\u00e4r du skapar ett objekt fr\u00e5n den klassen.<\/p>\n<p>F\u00f6r det andra kommer en viss sj\u00e4lvparameter att till\u00e5ta initialiseringsmetoden att v\u00e4lja ett nytt objekt.<\/p>\n<p>Slutligen, efter att ha definierat initialiseraren, skapar vi ett objekt med namnet <strong>jeans<\/strong>, anv\u00e4nda <strong>[objectName]  = Pant()<\/strong> syntax.<\/p>\n<pre>class Pant:<br\/><em># Define the initializer method<\/em> <br\/>def __init__(self, size, onsale, material, price):<br\/>self.size = size<br\/>self.onsale = onsale<br\/>self.material = material<br\/>self.price = price<p><em># Create an object of the Pant class and set each property to an appropriate value<\/em> <br\/>jeans = Pant(11, False, \"Denim\", 81)<\/p><\/pre>\n<h2 id=\"use-attributes-and-methods-to-define-properties-and-behaviors\"><span class=\"ez-toc-section\" id=\"Anvand_attribut_och_metoder_for_att_definiera_egenskaper_och_beteenden\"><\/span>  Anv\u00e4nd attribut och metoder f\u00f6r att definiera egenskaper och beteenden<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Objekt i Python kan anv\u00e4nda tv\u00e5 olika typer av attribut: klassattribut och instansattribut.<\/p>\n<p>Klassattribut \u00e4r variabler eller metoder som alla objekt i den klassen delar.  D\u00e4remot \u00e4r instansattribut variabler som \u00e4r unika f\u00f6r varje objekt \u2013 instansen av en klass.<\/p>\n<p>L\u00e5t oss skapa en instansmetod f\u00f6r att interagera med objektegenskaper.<\/p>\n<pre>class Pant:<br\/><em># Define the initializer method<\/em> <br\/>def __init__(self, size, onsale, material, price):<br\/>self.size = size<br\/>self.onsale = onsale<br\/>self.material = material<br\/>self.price = price<p><em># Instance method<\/em> <br\/>def printinfo (self):<br\/>return f\"This pair of pants is size {self.size}, made of {self.material}, and costs {self.price}\"<\/p><p><em># Instance method<\/em> <br\/>def putonsale (self):<br\/>self.onsale = True<\/p><p>jeans = Pant(11, False, \"Denim\", 81)<br\/>print(jeans.printinfo())<br\/>jeans.putonsale()<br\/>print(jeans.onsale)<\/p><\/pre>\n<p>H\u00e4r, den f\u00f6rsta metoden, <strong>printinfo()<\/strong>, anv\u00e4nder alla egenskaper utom <strong>till salu<\/strong>.  Den andra metoden, <strong>putonsale()<\/strong>, st\u00e4ller in v\u00e4rdet p\u00e5 <strong>till salu<\/strong> fast egendom.  Notera hur b\u00e5da dessa instansmetoder anv\u00e4nder nyckelordet <strong>sj\u00e4lv<\/strong>.  Detta h\u00e4nvisar till det specifika objektet (eller instansen) som anv\u00e4nds f\u00f6r att anropa metoden.<\/p>\n<p>N\u00e4r vi ringer <strong>putonsale()<\/strong>, anv\u00e4nder den h\u00e4r metoden <strong>sj\u00e4lv<\/strong> parameter f\u00f6r att \u00e4ndra v\u00e4rdet p\u00e5 det specifika objektet.  Om du hade skapat en annan instans av <strong>Fl\u00e4mta<\/strong>\u2014leggings, till exempel \u2014 det h\u00e4r samtalet skulle inte p\u00e5verka det.  En instansegenskap f\u00f6r ett objekt \u00e4r oberoende av alla andra.<\/p>\n<h2 id=\"how-to-use-inheritance-in-python\"><span class=\"ez-toc-section\" id=\"Hur_man_anvander_arv_i_Python\"><\/span>  Hur man anv\u00e4nder arv i Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Du kan ut\u00f6ka exemplet ovan genom att l\u00e4gga till en underkategori av <strong>Fl\u00e4mta<\/strong> klass.  I objektorienterad programmering \u00e4r detta k\u00e4nt som arv.  Att expandera klassen kommer att definiera extra egenskaper eller metoder som inte finns i den \u00f6verordnade klassen.<\/p>\n<p>L\u00e5t oss definiera Leggings som en underklass och \u00e4rva den fr\u00e5n <strong>Fl\u00e4mta<\/strong>.<\/p>\n<pre><em># Leggings is the child class to parent class Pant<\/em> <br\/>class Leggings(Pant):<br\/>def __init__(self, size, onsale, material, price, elasticity):<br\/><em># Inherit self, size, onsale, material, and price properties<\/em> <br\/>Pant.__init__(self, size, onsale, material, price)<p><em># Expand leggings to contain extra property, elasticity<\/em> <br\/>self.elasticity = elasticity<\/p><p><em># Override printinfo to reference \"pair of leggings\" rather than \"pants\"<\/em> <br\/>def printinfo(self):<br\/>return f\"This pair of leggings is size {self.size}, made of {self.material}, and costs {self.price}\"<\/p><p>leggings = Leggings(11, False, \"Leather\", 42, True)<br\/>print(leggings.printinfo())<\/p><\/pre>\n<p>Den nya initialiseringsmetoden tar alla samma egenskaper som Pant-klassen och l\u00e4gger till en unik elasticitetsegenskap.  Du kan ut\u00f6ka en klass f\u00f6r att \u00e5teranv\u00e4nda befintlig funktionalitet och minska kodl\u00e4ngden.  Om din Leggings-klass inte \u00e4rvde fr\u00e5n Pant-klassen, skulle du beh\u00f6va reproducera befintlig kod, bara f\u00f6r en liten f\u00f6r\u00e4ndring.  Du kommer att m\u00e4rka dessa f\u00f6rdelar mer n\u00e4r du arbetar med st\u00f6rre och mer komplicerade klasser.<\/p>\n<h2 id=\"check-if-an-object-inherits-from-a-class-with-isinstance\"><span class=\"ez-toc-section\" id=\"Kontrollera_om_ett_objekt_arver_fran_en_klass_med_isinstance\"><\/span>  Kontrollera om ett objekt \u00e4rver fr\u00e5n en klass med isinstance()<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>De <strong>isinstance()<\/strong> funktion kontrollerar om ett objekt \u00e4r en instans av en specifik klass eller n\u00e5gon av dess f\u00f6rfaderklasser.  Om objektet \u00e4r av den givna typen, eller en typ som \u00e4rver fr\u00e5n det, returnerar funktionen True.  Annars kommer den att returnera False.<\/p>\n<pre><em># Dummy base class<\/em> <br\/>class Pant:<br\/>None<p><em># Dummy subclass that inherits from Pant<\/em> <br\/>class Leggings(Pant):<br\/>None<\/p><p>pants = Pant()<br\/>leggings = Leggings()<\/p><p>print(isinstance(leggings, Pant))<br\/>print(isinstance(pants, Leggings))<\/p><\/pre>\n<p>Observera att Python anser att <strong>damasker<\/strong> objekt, av typen Leggings, en instans av Pant, moderklassen f\u00f6r Leggings.  Men a <strong>byxor<\/strong> objekt \u00e4r inte en instans av klassen Leggings.<\/p>\n<h2 id=\"python-is-the-perfect-introduction-to-oop\"><span class=\"ez-toc-section\" id=\"Python_ar_den_perfekta_introduktionen_till_OOP\"><\/span>  Python \u00e4r den perfekta introduktionen till OOP<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Python har vunnit popularitet p\u00e5 grund av dess enkla och l\u00e4ttf\u00f6rst\u00e5eliga syntax j\u00e4mf\u00f6rt med andra programmeringsspr\u00e5k.  Spr\u00e5ket designades kring objektorienterad programmering, s\u00e5 det \u00e4r ett utm\u00e4rkt verktyg f\u00f6r att l\u00e4ra sig paradigmet.  De flesta stora teknikf\u00f6retag anv\u00e4nder Python n\u00e5gon g\u00e5ng i sin teknikstack, och utsikterna ser bra ut f\u00f6r Python-programmerare.<\/p>\n<p>Om du ser fram emot att g\u00f6ra karri\u00e4r inom utvecklingssektorn \u00e4r Python ett utm\u00e4rkt st\u00e4lle att b\u00f6rja.  Se till att du har en gedigen f\u00f6rst\u00e5else f\u00f6r de grundl\u00e4ggande principerna \u2013 objektorienterad programmering \u00e4r bara b\u00f6rjan!<\/p>\n<p>    <strong class=\"section-sub-title\">Om f\u00f6rfattaren<\/strong><\/p>\n<p>            <strong class=\"bio-title\">Zadhid Powell (29 publicerade artiklar)<br \/><\/strong><\/p>\n<p>Zadhid Powell \u00e4r en CSE-examen som gav upp kodning f\u00f6r att b\u00f6rja skriva!  Tillsammans med en digital marknadsf\u00f6rare, Fintech-entusiast, SaaS-expert, l\u00e4sare och angel\u00e4gen f\u00f6ljare av mjukvarutrender.  Ofta kan du hitta honom rocka klubbar i centrum med sin gitarr eller inspektera havsbottendykning.<\/p>\n<p>                            Mer fr\u00e5n Zadhid Powell<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Prenumerera_pa_vart_nyhetsbrev\"><\/span>Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>G\u00e5 med i v\u00e5rt nyhetsbrev f\u00f6r tekniska tips, recensioner, free e-b\u00f6cker och exklusiva erbjudanden!<\/p>\n<p>Klicka h\u00e4r f\u00f6r att prenumerera<\/p>\n<\/p><\/div>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/#Vad_ar_objektorienterad_programmering_i_Python\" >Vad \u00e4r objektorienterad programmering i Python?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/#Hur_man_definierar_en_klass_i_Python\" >Hur man definierar en klass i Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/#Hur_man_skapar_ett_objekt_i_Python\" >Hur man skapar ett objekt i Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/#Anvand_attribut_och_metoder_for_att_definiera_egenskaper_och_beteenden\" >Anv\u00e4nd attribut och metoder f\u00f6r att definiera egenskaper och beteenden<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/#Hur_man_anvander_arv_i_Python\" >Hur man anv\u00e4nder arv i Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/#Kontrollera_om_ett_objekt_arver_fran_en_klass_med_isinstance\" >Kontrollera om ett objekt \u00e4rver fr\u00e5n en klass med isinstance()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/#Python_ar_den_perfekta_introduktionen_till_OOP\" >Python \u00e4r den perfekta introduktionen till OOP<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-objektorienterad-programmering-i-python\/#Prenumerera_pa_vart_nyhetsbrev\" >Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>Objektorienterad programmering (OOP) \u00e4r en form av programmering centrerad kring objekt: sm\u00e5 enheter som kombinerar data och kod. Simula var det f\u00f6rsta OOP-spr\u00e5ket som skapades f\u00f6r simulering av fysiska modeller. Med OOP kan du definiera klasser som fungerar som mallar f\u00f6r objekt av specifika typer. K\u00e4rnelementen i OOP \u00e4r klasser, objekt, metoder och attribut. OOP [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":92074,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[5],"tags":[16,27,163,45339,35877,36048],"class_list":["post-92073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggar","tag-anvander","tag-hur","tag-man","tag-objektorienterad","tag-programmering","tag-python"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/92073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/comments?post=92073"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/92073\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media\/92074"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media?parent=92073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/categories?post=92073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/tags?post=92073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}