python - valtozo nevenek lekerese

Hogy lehet megoldani, hogy konkretan egy valtozo nevet - es nem a tartalmat - kerjem le? Mint ahogy a hibaknal is kiirja, hogy ilyen, meg olyan objektum, valtozo, vagy barmi. Valahogy csak le lehet kerni, hisz az igaz, hogy a valtozo csak egy memoriateruletre mutat, de a programban megiscsak a 'sztringhez' rendelodik a memoriacim... o_O

valtozo = "tartalom"

Ilyenkor "valtozo" igazi tartalma a memoriacim, a memoriacim pedig a "tartalom" helyet jeloli a memoriaban - na en a memoriacimhez rendelt sztringet, tehat a 'valtozot' akarom megtudni. Hogyan?
(valojaban egy konkret objektum nevet akarom megtudni, hogy hibajelzesenel hivatkozhassak ra, de mivel az is valtozo, igy gondolom ugyanolyan modszerrel lehet megtudni a nevet)

Hozzászólások

Amennyire én tudom, az objektum nem tudja a saját nevét.

Valami olyasmivel lehet próbálkozni, hogy nyilvántartod a szóba jöhető objektumok neveit, a unique id-hoz rendelve.

>>> a=1918
>>> b=1945
>>> ismert={}
>>> ismert[id(a)] = 'a'
>>> ismert[id(b)] = 'b'
>>> #someexception
... o=a
>>> ismert[id(o)]
'a'

Abba bele sem merek gondolni, hogy mondjuk a=b...
Igazából nem tudom, hogy ez az egész mihez kellene, de abban biztos vagyok, hogy valahogy máshogy kell tervezni...

Az otlet nem rossz, de tulbonyolitott, masfelol azt szeretnem, ha az objektumon belul lenne ez a kiiratas - bar ugy nez ki, a nevet belulrol nem lehet megallapitani. Mindenesetre koszonom, hogy segitettetek!

We are the borg! :P
--
Azt akarom, hogy az emberek ne kenyszerbol tanuljanak, hanem azert, mert tudni akarnak.
Ui.: Kezdo Linux-os vagyok, emberi nyelven valaszoljatok! Koszi! :)

Elég, ha az tudja, ami az objektumot kezeli. :)

Amúgy jómagam csak passzív, read-only használom a pythont, de a felvetés érdekelt annyira, hogy rákeressek.

Az alábbi linken némi flame után születnek megoldásnak látszó hozzászólások.

http://www.gossamer-threads.com/lists/python/python/689635

Igen, erre magam is ratalaltam, csak el szerettem volna kerulni a 'name' valtozo hasznalatat, de ugy nez ki, ez a legkezenfekvobb megoldas.
--
Azt akarom, hogy az emberek ne kenyszerbol tanuljanak, hanem azert, mert tudni akarnak.
Ui.: Kezdo Linux-os vagyok, emberi nyelven valaszoljatok! Koszi! :)

Mi sem egyszerűbb! Ha global változóról van szó akkor keresgélhetsz a globals() által visszaadott dict-ben. Ha viszont lokális változóról van szó, akkor az inspect modullal szépen megkeresed melyik frame-ben jelenik meg először az f_locals-ban, és akkor valószínűleg az ott szereplő név kell neked.

Mókás így megírni, de tényleg jobban jársz ha adsz nekik egy name mezőt.

Igen, valoban ez lenne a legjobb, ha nem az objektum belsejebol akarnam megtudni a nevet. Bar, igy belegondolva, ez valoszinuleg nem lehetseges, mint ahogy pl az ember sem tudja megmondani, hogy milyen az arca, anelkul, hogy kulso segitseget (tukor) igenybe venne. Viszont hasznos ez a vars(), koszi a tippet. :)
--
Azt akarom, hogy az emberek ne kenyszerbol tanuljanak, hanem azert, mert tudni akarnak.
Ui.: Kezdo Linux-os vagyok, emberi nyelven valaszoljatok! Koszi! :)

Ez amúgy mire kellene? Hirtelen egy esetet se tudok elképzelni, hogy ilyet kéne használni...

Van egy 'ablak' osztalyom, aminek kotelezoen meg kell adni nehany attributumot, de mivel ezek nem parameterek, igy megeshet, hogy a programozo elfelejti beallitani oket. Ilyen esetben szeretnem kiirni, hogy melyik objektumon belul melyik valtozo hibazik. Na, az objektum nevenek kiirasaval van baj...
--
Azt akarom, hogy az emberek ne kenyszerbol tanuljanak, hanem azert, mert tudni akarnak.
Ui.: Kezdo Linux-os vagyok, emberi nyelven valaszoljatok! Koszi! :)

Az objektum tipusanak a nevet ki tudod irni. az objektum referenciajanak nevet viszont nem, es nem is lehet a programbol. (mivel akar tobb kulonbozo nevu valtozo is mutathat ugyanarra az objektumra).

Legjobb megoldas dobni ilyenkor egy AttributeError exceptiont, ilyenkor az interpreter megall, kiirja melyik sorban volt a hiba, es folfele vegig az osszes hivas pontos helyet, sorszamat, stb. Az exceptionnek megadhatsz egyedi hibauzenetet is.

Ez kell neked, masok is igy szoktak csinalni python-ban.