2016-10-10 7 views
-1

私は別のクラスの別の辞書の辞書にアクセスできる非常に大きな文字列を持っています。変数は同義語を持つことができますか?

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

私は、文字列の順序で、この辞書を使用した場合、私はこのような何かを(私はそう思う)書くことができます。

with self.app_data: 
    ... 

しかし、私はすべてのファイル内の別の行でこの変数を使用し、私がすることができますwith命令を使用してください。私が考えるよりも、C++では#define VAR very.long.access.path.to.variableのようなものを使うことができます。

Pythonには何かがありますか?可変アクセス名を短くすることはできますか?

P.S. そのlong-access-name変数は、他のスレッドと共に変わります。別の変数に代入する必要はありません。私はコードのための短いテキストを探しています

+4

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

+2

'with'についてのドキュメントを読む、それはあなたの考えではありません...シノニムを作るには、' a = very.long.access.path.to.variable ''を使用してください。 – mguijarr

+0

@decezeそれは助けることができますが、毎回変数 'a'を再割り当てする必要があります。その変数が他のスレッドと一緒に変わることを覚えておいてください。 – gek0n

答えて

1

プロパティを使用する可能性がありますか?

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 

あなたは、このデータが複数のスレッドでリード/ライトすることが予想される場合にも、あなたは内部のミューテックスでvar_threadsafeプロパティを作成することができます。

関連する問題