2016-10-10 3 views
-1

나는 매우 큰 문자열을 가지고 있는데, 이는 다른 클래스의 다른 사전에있는 사전에 접근 할 수있게 해준다. 내가 문자열의 순서로 DICT를 사용한 경우변수는 동의어를 가질 수 있습니까?

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과 같은 것을 사용할 수 있습니다.

파이썬에는 이와 비슷한 것이 있습니까? 가변 액세스 이름을 짧게 할 수 있습니까?

P. 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 속성을 만들 수 있습니다.

관련 문제