2016-10-10 7 views
-1

Ich habe sehr große Zeichenfolge, die mir Zugriff auf mein Wörterbuch in einem anderen Wörterbuch in einer anderen Klasse geben.Können Variablen Synonyme haben?

self.app_data.ip_table[self.app_data.cfg.MY_IP]['tasks'] 

Wenn ich diese dict in Folge von Strings, ich so etwas schreiben kann (ich glaube so):

with self.app_data: 
    ... 

Aber ich benutze diese Variable in verschiedenen Zeilen in alle Datei, kann ich Verwenden Sie keine with Anweisung. Als ich denke, in C++ können wir etwas wie #define VAR very.long.access.path.to.variable verwenden.

Gibt es so etwas in Python? Kann ich einen kürzeren Variablennamen verwenden?

P.S. Diese Variable mit langem Zugriffsnamen ändert sich mit einem anderen Thread. Ich muss es nicht nur einer anderen Variablen zuweisen. Ich suche nach Text - kürzer für Code

+4

'a = self.app_data' ...? – deceze

+2

Lesen Sie die Dokumentation über 'mit', es ist nicht das, was Sie denken ... Um ein Synonym zu erstellen, weisen Sie die Variable einfach einer anderen Variablen mit einem kürzeren Namen zu, wie' a = very.long.access.path.to.variable 'und dann' a' benutzen. – mguijarr

+0

@deceze es hilft, aber ich muss die Variable 'a' jedes Mal neu zuweisen, coz, dass Variable mit anderen Thread ändert – gek0n

Antwort

1

Verwenden Sie vielleicht Eigenschaften?

class C: 
    def __init__(self, ...): 
     self.app_data = get_app_data() 

    @property 
    def var(self): 
     return self.app_data.very['long'].path.here 

    @var.setter 
    def var(self, value): 
     self.app_data.very['long'].path.here = value 

c = C() 
print c.var 
c.var = 1337 

Sie können auch var_threadsafe Eigenschaft mit einem Mutex innen erstellen, wenn Sie diese Daten erwarten in mehreren Threads gelesen/geschrieben werden.