2017-11-10 14 views
0

상속을 통해 상수 값에 액세스하는 방법을 보여주는 많은 게시물을 보았습니다. 그건 내 사건이 아니야.
두 개의 다른 모듈에서 두 개의 인스턴스를 만들고 정보/변수를 공유 할 수 있습니다.
두 가지 문제 :
1. 클래스가 서로 다른 파일에 있기 때문에, "수입"모듈로를 보내고이 경우 많은 도움이되지 않습니다, 서로 "잘 모릅니다"
2. 어떻게 "print_class"예를 수 & "cal_class"인스턴스의 변수 값을 변경 하시겠습니까?python - 서로 다른 두 인스턴스간에 변수를 공유하는 방법

하나의 인스턴스에서 다른 인스턴스로 값을 액세스하는 방법을 찾고 있습니다.

cal_class_file.py

:

여기

내 단순화 문제가 (내 경우, "기본"기능을 통해 매개 변수를 전달하는 것은 실용적이지, 인스턴스 사이를 통과하는 정보 (엑셀 표)의 할당한다있다)

class cal_class: 
    def add(self,first,second) 
     self.result= first + second 

print_class_file.py

class print_class: 
    def print_sum(self): 
     result_from_cal_class = ?? <=-# How to get the value from local_calculate.result? 
     print(result_from_cal_class) 

main.py

import cal_class_file 
import print_class_file 

def main(): 
    local_calculate = cal_class_file.cal_class() # create instance 
    local_print = print_class_file.print_class(); # create instance that reads values from "local_calculate" instance 

    local_calculate.add(5,6) # calculate addition 
    local_print.print_sum() # output: 11 

    local_calculate.add(4,5) # update values in "local_calculate" instance 
    local_print.print_sum() # output: 9 

"result_from_cal_class"에 대한 현재 (최신) 값을 얻으려면 어떻게해야합니까?

답변

2

당신은 당신의 클라이언트 코드에 바로 그것을 가지고에 값을 전달합니다.

class print_class: 
    def print_sum(self, result_from_cal_class): 
     print(result_from_cal_class) 

def main(): 
    local_calculate = cal_class_file.cal_class() # create instance 
    local_print = print_class_file.print_class(); # create instance that reads values from "local_calculate" instance 

    local_calculate.add(5, 6) # calculate addition 
    local_print.print_sum(local_calculate.result) # output: 11 

    local_calculate.add(4, 5) # update values in "local_calculate" instance 
    local_print.print_sum(local_calculate.result) # output: 9 

출력 :

11 
9 

그러나, 당신은 당신의 클라이언트가이 않는 것을 의미하는 경우 :

def main(): 
    # setup elided ... 

    # actually call to add is done in another function 
    local_calculate.add(5, 6) # calculate addition 

    # actually call to print_sum is done somewhere else: 
    local_print.print_sum() # output: 11 

print_class을 다음과 같이 정의 할 수 있습니다.

이 전역 변수를 가진 같은 조금으로

def main(): 
    local_calculate = cal_class_file.cal_class() # create instance 
    local_print = print_class_file.print_class(local_calculate); # create instance that reads values from "local_calculate" instance 

조심 :

class print_class: 
    def __init__(self, calculator): 
     self.calculator = calculator 
    def print_sum(self): 
     print(self.calculator.result) 

다음과 같이 그것을 초기화 계산은 결과를 떠나, 무언가를, 인쇄 마지막 결과를 선택합니다.

예기치 않은 호출로 원하는 값과 인쇄 된 값 사이에 계산하면 예기치 않은 결과가 발생합니다.

+0

첫 번째 솔루션은이 예제에만 유용하지만 실제로 처리 할 데이터가 많으므로 (예 : 200MB 이상의 테이블) 각각의 기본 함수를 통해 매개 변수/값을 전달하는 것은 실제 프로젝트에서는 실용적이지 않습니다. 테이블이 조금 다릅니다. 또한 더 많은 인스턴스와 클래스가 있습니다. 여러 인스턴스간에 값을 전달하면 테이블 분석을 자동화하는 것이 매우 어려워집니다. 두 번째 솔루션을 적용해야합니다. 실용적인지 확인해보십시오. – orenk

+0

매력처럼 작동합니다. 감사합니다 quamrana – orenk