2009-09-13 6 views
0

알아낼 수 없습니다. 터미널에서 클래스를 인스턴스화하는 모듈을 가져옵니다.이 모듈은 액세스하는 방법을 알지 못했습니다. 물론, 나는 항상 터미널에서 인스턴스화 할 수 있습니다 :터미널에서 인스턴스에 액세스하십시오.

 
Server=Data.ServerData() 

가 그럼 난 결과 얻을 수 있습니다 : 그러나

 
Server.Property().DefaultChart 

를, 내가 인스턴스가 이미 실행에서 직접 결과를 받고 그 단계를 건너 뛰려면 기준 치수. 이 경우 Data.Server는 데이터를 가져 왔을 때 서버 인스턴스를로드해야한다고 생각합니다.

 
Data.Server.Property().DefaultChart 

>>> AttributeError: 'module' object has no attribute 'Server' 

터미널에서 실행중인 인스턴스에 액세스하는 방법은 어떻게됩니까?

답변

2

Data.py을 가져 오는 경우 Data.ServerData 클래스 (다소 모호하지만 특정 경우에는 확인 됨)의 인스턴스가 암시 적으로 만들어지면 해당 모듈에서 해당 인스턴스의 이름을 지정하는 방법에 대해 알려주지 않습니다. 에서 dir(Data)을 실행하여 Data 모듈에 정의 된 모든 이름을 확인하십시오. 당신이 어떤 이름 (!있는 경우)보고 싶다면 Data.ServerData의 인스턴스 값, 예를 들어 있습니다

>>> [n for n in dir(Data) if isinstance(getattr(Data,n), Data.ServerData)] 

읽기 Data.py의 소스 코드는 간단 수 있습니다,하지만 당신은 그러한 성찰을위한 많은 다른 옵션이 있습니까 무슨 일이 일어나고 있는지 정확하게 알아 내야합니다. (예상되는 것과는 어떤 차이가 있습니까?)].

+0

감사합니다. 그런 n00b! __name __ == "__ main__": 래퍼 인 경우 내부에서 인스턴스를 생성 했으므로 브라우저에서는 작동하지만 터미널에서는 작동하지 않습니다. 좋은 진단 도구입니다. – Gnarlodious

+0

@Gnarlodious : 답변으로 받아 들여주세요. 녹색 확인 표시를 클릭하십시오. –