2014-09-13 10 views
1

"첫 번째 blankgame.py 예제를 시도하는 동안"Python & 파이 게임으로 게임 만들기 "를 시도하고 있습니다. 내가 AttributeError : 'module'객체에 'localals'속성이 없습니다.

from pygame.locals import *

을 사용했을 때 나는 그러나

if event.type == QUIT:

어떠한 오류가 발생했습니다 없습니다. 시도한 경우

if event.type == pygame.locals.QUIT

처음에 가져 오기를 수행하지 않고 오류가 발생했습니다. 아무도 이걸 도와 주시고 직접 가져 오기와 QUIT의 전체 상수 경로 참조를 사용하는 것의 차이점을 말씀해주십시오.

감사합니다.

+0

모든 것이 이제 로컬 모듈 pygame.locals로드 적이 있기 때문에 당신이 필요하지 않도록 위의 가져 오기를 사용하지 않고 pygame.locals.QUIT를 사용

, 당신에게 오류가 발생합니다 접두어로 참조하십시오. – martineau

답변

1
from pygame.locals import * 

이렇게하면 'pygame.locals'에서 로컬 네임 스페이스로 모든 것을 가져옵니다. 따라서 현재 네임 스페이스에있는 것처럼 해당 모듈의 멤버에 액세스 할 수 있습니다. 따라서 pygame.locals를 호출 앞에 붙여서는 안됩니다. pygame.locals.QUIT와 같은 접두어로 호출하면 오류가 발생합니다.

import pygame.locals 

이렇게하면 'pygame.locals'의 모든 항목이로드되지만 네임 스페이스에는로드되지 않습니다. pygame.locals.QUIT와 같이 'pygame.locals'를 사용하여 전화를 프리픽스 (prefix)해야합니다. 이 pygame.locals``에서

+0

안녕하세요 @ user3885927! 도와 주셔서 대단히 감사합니다. 그리고 실제로 내 문제를 해결했습니다. 그건 그렇고, 내가 처음에'import pygame'을 쓰더라도,'import pygame.locals'을 넣어야하는지 물어봐도 될까요? – JiaweiK

+0

Jiaweik, pygame .__ init__이 어떻게 구현되는지에 따라 다릅니다. os가 os.path를 사용할 수있게하기 때문에, 예를 들어'os'를 import 한 다음'os.path.exists'를 사용할 수 있습니다. 엄지 손가락의 규칙은 : 문서의 예제를 따르거나 그냥 시도해보고 작동하는지 확인하거나 __init__.py 파일을 살펴보십시오. – Rainy

관련 문제