2017-04-13 7 views
5

:지역 사인을 변경할 수 있습니까? 기본적으로 대신의

context1.a 
context1.b() 
context2.a 
context2.b() 

내가 쓰고 싶은 :

with context1(): 
    a 
    b() 

with context2(): 
    a 
    b() 

가 이상적으로는 사용자 정의 __get__을 가진 객체로 "지역 주민 사전"밖으로 전환하여이 작업을 수행 할 것입니다,하지만 난 ' 그 일을하는 법이나 가능하다면 알지 못합니다.

왜? : 저는 (재미있게) 파견하는 일종의 술어를 구현했지만 매번 문맥을 명시 적으로 지정하여 사용할 수 있습니다. context.a() + context.b()은 항상 쓸 수 있습니다.

+5

분명히 가능한 가장 어려운 방법으로 문제를 해결하려고합니다. 왜 당신은 단지 이것들을 필요에 따라 호출하는 함수를 만들 수 없습니까? –

+0

Javascript의'with'와 같은가? Javascript에서는 그다지 좋은 생각이 아닙니다. 더 이상 사용되지 않으며 엄격 모드에서 금지됩니다. – user2357112

답변

0

하지 마십시오. 튜링 기계가 무언가를 할 수 있다고해서 그것이 당신의 의도를 사람들에게 알리는 좋은 방법이라는 것을 의미하지는 않습니다.

표준 구문을 따르기 만하면 코드가 다른 엔지니어에게 명확 해집니다.

with context1() as c: 
     c.a 
     c.b()