-kga- Skrevet 1. april 2011 Del Skrevet 1. april 2011 (endret) Hvordan løser jeg dette pointer problemet i python når python ikke har pointere? a = 1 b=a print a,b <<<1 1 a=2 print a,b <<<2 1 Jeg vil at b også skal endres til å være det samme som a (1). Jeg ønsker å edre på objektet som a og b ar koblet til, eller om det ikke går og jeg må gi dem ett nytt objekt å peke på så vil jeg at det skal endres for alle og ikke kun den ene som her. Endret 1. april 2011 av -kga- Lenke til kommentar
snippsat Skrevet 1. april 2011 Del Skrevet 1. april 2011 (endret) Python har "names" eller "identifier" som et navnskilt koblet til et objectet. >>> a = 1 >>> id(a) 86174040 >>> #a lever som et integer object 1,med en tildelt plass minnet som id() viser >>> b = a >>> id(b) 86174040 >>> id(a) 86174040 >>> #Det som skjer her er at både a og b peker til integer object 1 som nå har 2 navnskilt(identifiers) a og b >>> a = 2 >>> #Hvis vi tilordner a til integer 2 object. >>> #Vil originale integer 1 objekt ikke lenger ha navnet a tilordnet. >>> #garbage collection vil rydde opp,men rører ikke integer 1 object som nå har kun et navn tilordnet b. >>> #a og b vil nå være 2 forskjellige objecter. >>> id(a) 87091532 >>> id(b) 86174040 >>> Endret 1. april 2011 av SNIPPSAT Lenke til kommentar
zotbar1234 Skrevet 2. april 2011 Del Skrevet 2. april 2011 Hvordan løser jeg dette pointer problemet i python når python ikke har pointere? a = 1 b=a print a,b <<<1 1 a=2 print a,b <<<2 1 Jeg vil at b også skal endres til å være det samme som a (1). I tillegg til det SNIPPSAT skrev -- den klassiske løsningen er å pakke den verdien du ønsker å dele på denne måten i et annet objekt. Det "vanlige" valget å oppnå det på er via lister/tuples (og det er også derfor man blir advart av epylint om å bruke dem som default arguments): a = [3,] b = a b[0] = 4 print a => [4] Jeg ønsker å edre på objektet som a og b ar koblet til, eller om det ikke går og jeg må gi dem ett nytt objekt å peke på så vil jeg at det skal endres for alle og ikke kun den ene som her. "Tilordning" (iallfall uttrykt via operator= i Python) virker annerledes enn det du ønsker akkurat i denne situasjonen. En variabel i Python kan ikke være et annet navn for en annen variabel (slik det er tilfellet med references i C++, f.eks.). Lenke til kommentar
Elenion Skrevet 9. april 2011 Del Skrevet 9. april 2011 http://docs.python.org/library/ctypes.html#fundamental-data-types Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå