Forum huvudsida -> Programmering -> get/set-funktioner i python?
Sidor: 1
Oscar | 16:54 - 9:e Maj 2007 | Post #1 | |
Medlem Inlägg: 15 Skicka PM |
Jag har lite bakgrund i java sen gymnasiet, men inte mycket mer än att jag kommer ihåg praxisen med att använda get/set-funktioner hela tiden. Nu sitter vi och kodar python i skolan med klasser igen, och jag börjar fundera över java-praxisen. Använder man get/set-funktioner på samma sätt, om man ska koda så "pythonic" som möjligt? Eller finns det inget smidigare sätt att göra det rätt på? Vad är "rätt" i detta anseende, förresten? ------------------------- "Söker FSF-pinnar på Fil.Fak." |
ozamosi | 17:17 - 9:e Maj 2007 | Post #2 | |
Administratör Inlägg: 1129 Skicka PM |
Jag kan inte påminna mig att jag sett pythonkod använda get/set särskilt ofta. Lite greppande i /usr/lib/python2.5/site-packages/ verkar bekräfta att det inte är vanligt (även om det förekommer). Jag misstänker att det har att göra med att direktaccess blir mer läslig kod att göra. Har du specialcheckar du vill göra för en specifik variabel du inte vill att någon rör utan att du vet det, kan du alltid göra get/set-funktioner, och döpa variabeln med ett _ i början, vilket är ett sätt att berätta för andra kodare att om det hade gått att göra saker privata i python hade den variabeln varit privat. Man kan också göra generella kontroller genom att skapa funktionerna __getattr__ och __setattr__ och göra gulligheter i dem. Eftersom det är python går det såklart att komma åt alla attribut på andra sätt, om programmeraren som använder ditt bibliotek verkligen Vill skjuta sig i foten. Och jag har en fsf-pinne jag kommer över med i höst ------------------------- Ljusblå Senast redigerad 17:18 - 9:e Maj 2007 |
Oscar | 17:32 - 9:e Maj 2007 | Post #3 | |
Medlem Inlägg: 15 Skicka PM |
Oh, det där var precis det jag ville veta! Och om jag tolkade dig rätt så är praxisen med typ variabeltilldelning i klasser såhär: p = Monster("Tråkigt namn") p.name = "Coolt namn istället" och urläsning typ print p.name Istället för en massa jobbiga extrafunktioner ------------------------- "Söker FSF-pinnar på Fil.Fak." |
ozamosi | 17:36 - 9:e Maj 2007 | Post #4 | |
Administratör Inlägg: 1129 Skicka PM |
Tja... Jag har ingen källa, men jag skulle påstå det, i alla fall ------------------------- Ljusblå |
FunkyChicken | 17:40 - 9:e Maj 2007 | Post #5 | |
Nyhetsredaktör Inlägg: 800 Skicka PM |
Har haft en debatt om detta med min javalärare. Det finns knappast något mer vidrigt än get/set... Variabler är variabler och ska behandlas som sådana. Varför är det bara .NET som har properties? det är ju helt underbart... |
Oscar | 18:36 - 9:e Maj 2007 | Post #6 | |
Medlem Inlägg: 15 Skicka PM |
I Ruby (har gluttat lite) så har de byggt in det här på ett imho jättesmart sätt: class HelloWorld attr_reader :varde, :varde2, :vardeN attr_writer :skrivvarde, :vardeN end hej = HelloWorld hej.varde => värdet hej.varde = "nytt värde" osv. Tycker det är ganska smart ------------------------- "Söker FSF-pinnar på Fil.Fak." |
Belsebubben | 16:14 - 10:e Maj 2007 | Post #7 | |
Medlem Inlägg: 76 Skicka PM |
jo, ruby är ganska smart på det viset. Men eftersom man inte kan modifiera attr readers så är de mest en gimmick (typ som scaffolding i rails) Det är inte nära lika bra som C# properties, fattar inte att ruby utvecklarna inte snott det än. ------------------------- Das Blinkencomp, jag väljer dig! |
Sidor: 1
Forum huvudsida -> Programmering -> get/set-funktioner i python?
Du får inte posta i den här tråden | Till toppen
Datum
2024-12-22 20:39
Vecka: 51
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.