2016-07-21 2 views
0

이 질문은 아마도 전에 물어 보았을 것입니다. 그러나 스택 오버플로에서 발견 한 다른 게시물은 주로 전역 변수 변경 및 함수 가져 오기 등을 다루었습니다. 내가 빠른 검색을했을 때.파이썬에서 여러 모듈에서 사용할 변수를 선언하는 방법

저는 파이썬으로 코드를 작성하기 시작했습니다. 다음을 수행하는 가장 효율적이고 적절한 방법이 무엇인지 궁금합니다.

다른 모듈로 가져 오는 부모 모듈이 있습니다.

# some import statements go here 

# Constants that need to be the same for all objects 
a = 1 
b = 2 
... 

# A class with some useful functions 
class Def(): 
    def __init__(self): 
    ... 

Def 클래스의 함수를 사용하기 위해이 모듈을 가져오고 있습니다. 그러나 클래스를 가져 오는 모든 모듈이 클래스 외부에 선언 된 상수에 액세스 할 수도 있기를 바랍니다.

내가 외부에서 선언 한 이유는 그 모듈에서 모듈을 호출 할 때마다 그 값을 사용하기를 원하기 때문입니다. 객체에 부착하고 싶지 않고 (self.a, self.b 등으로 참조해야 함) 사용중인 모든 모듈에서 상수가됩니다.

내가 고려하고있는 옵션 중 일부

은 다음과 같습니다

  1. 사용 from parentmodule import *

나는를 별도의 클래스에서 전역 변수 이러한 선언, 모든 모듈에 클래스를 가져 이들 중 하나가 효과가 있는지, 그리고이를 수행하는 표준 방법이 있는지 확실하지 않습니다. 후자를하는 동안 변수의 이름 충돌은 상수의 특성 때문에 문제가되지 않습니다. 내 프로그램의 맥락에서 그들은 다른 변수를 나타내는 데 사용되지 않는 고유 한 이름을 가진 물리적 상수입니다.

질문이 너무 기본/이전 질문 인 경우 죄송하며 도움을 주셔서 감사합니다.

답변

1

전체 모듈을 가져 오는 것은 일종의 네임 스페이스 역할을 할 것이며, 가장 간단한 방법이라고 생각합니다. 그래서 당신은 "mystuff.py"가 :

a = 1 
b = 2 

def MyFunc(): 
    .... 
다른 모듈에서 다음

:

import mystuff 

print mystuff.a 
print mystuff.b 

mystuff.MyFunc() 

솔루션에 :

from mystuff import * 

작동하지만, 아마도 갈등과 나는 생각하고 사람들이 "파이썬 (pythonic)"이라고 생각하는 것이 아닙니다.

+0

변수가 모든 모듈에서 공통적이라고 말하면서 mystuff.a, mystuff.b 등을 계속 입력 할 필요가 없습니까? – GoK

+1

mystuff.a를 a로 가져올 수 있습니다. 변수를 a로 호출 할 수 있습니다. 각 변수에 대해 한 줄의 코드가 필요하므로 너무 많은 변수가없는 한 작동합니다. – Parzzival

+1

또는 'from mystuff import a'. –

관련 문제