2014-01-11 4 views
2

나는 여러 개의 파일로 구성된 대형 파이썬 프로그램을 만들고 있는데 문제가 생겼다. 나는 별도의 파일에서 클래스에 5 개의 인스턴스를 생성하지만 일단 생성 된 후에는 액세스하는 방법을 모르겠습니다. 캡슐화되어 있습니다. 내 문제가 무엇인지 아주 간단한 예를 보여 드리겠습니다. 이 예제에서는 file_1과 file_2의 두 파일을 사용합니다. 클래스의 캡슐화 된 값을 별도의 파일에 액세스하는 방법은 무엇입니까?

import file_1 
def get_it(): 
    I = -1 
    first_one = 50 
    second_one = 75 
    for i in range(5): 
     I+=1 
     first_one = first_one*2 
     second_one = second_one*1.5 
     newI = "a"+str(I) 
     new = file_1.Hello() 
     file_1.Hello.set_num(new,first_one,second_one) 

def get_first(): 
    print(a1._Hello__first) 

file_2

class Hello(): 

    def set_num(self,one,two): 
     self.__first = one 
     self.__second = two 

file_1

그래서 나는 단지 file_2, get_it를 실행하고(). 실행하면 (모든 장면 뒤에서) 다음을 생성해야합니다.

a1._Hello__first = 100 
a1._Hello__second = 112.5 
a2._Hello__first = 200 
a2._Hello__second = 168.75 
..... 

데이터가 저장된 위치입니다. 필요한 것은 file_2에서 해당 데이터에 액세스하는 것이고, file_2에서 액세스 할 수있는 다른 함수를 만들려고합니다. 하지만 내 질문에 어떻게 액세스 할 수 있습니까? 이 file_2에서 두 번째 기능은, 그것은 100를 반환해야하지만 오류가 있습니다 : 내가 얻을 실행하면

def get_first(): 
    print(a1._Hello__first) 

는 "AttributeError는 'STR'개체가 어떤 속성 '안녕하세요 _first를'이 없습니다." 제 질문은, 어떻게 데이터에 액세스 할 수 있습니까?

+0

당신은 "1"''라는 개체를 만들 수 없습니다. 그냥 목록을 만들고 그것에 개체를 추가하십시오. – BrenBarn

+0

'file_1.Hello.set_num (new, first_one, second_one)'대신'new.set_num (first_one, second_one)'을 쓰면됩니다. 수동으로 메소드를 호출하는 대신 인스턴스를 통해 메소드를 호출 할 수 있습니다. 인스턴스를 첫 번째 인수로 전달합니다. (나는 또한 당신이'나는'무엇을하고 있는지 잘 모르겠다.) – DSM

+0

@BrenBarn, 이것은 학교 프로젝트이므로 수업을 사용하는 것 외에는 선택의 여지가 없다. 그래서 여러 개의 인스턴스를 만드는 방법에 대한 아이디어? – Pythonist

답변

0

클래스의 여러 인스턴스를 만들 때 얻을 수있는 위치에 클래스를 넣는 것이 일반적으로 좋습니다. dict 또는 list 같은 용기에 :

instances = [] # list to hold instances 
for _ in range(5): 
    first_one *= 2 
    second_one *= 1.5 
    new = file_1.Hello() # create instance 
    new.set_num(first_one, second_one) # set number 
    instances.append(new) # add to list 

이제 그들을 밖으로 인쇄 할 때

for instance in instances: 
    print(instance._Hello__first) 
    print(instance._Hello__second) 
+0

고마워요. 그게 내가 찾고 있던 바로 그거야! – Pythonist

관련 문제