나는 여러 개의 파일로 구성된 대형 파이썬 프로그램을 만들고 있는데 문제가 생겼다. 나는 별도의 파일에서 클래스에 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를'이 없습니다." 제 질문은, 어떻게 데이터에 액세스 할 수 있습니까?
당신은 "1"''라는 개체를 만들 수 없습니다. 그냥 목록을 만들고 그것에 개체를 추가하십시오. – BrenBarn
'file_1.Hello.set_num (new, first_one, second_one)'대신'new.set_num (first_one, second_one)'을 쓰면됩니다. 수동으로 메소드를 호출하는 대신 인스턴스를 통해 메소드를 호출 할 수 있습니다. 인스턴스를 첫 번째 인수로 전달합니다. (나는 또한 당신이'나는'무엇을하고 있는지 잘 모르겠다.) – DSM
@BrenBarn, 이것은 학교 프로젝트이므로 수업을 사용하는 것 외에는 선택의 여지가 없다. 그래서 여러 개의 인스턴스를 만드는 방법에 대한 아이디어? – Pythonist