2016-12-02 4 views
0

개체의 인스턴스에 액세스하고 다른 '기본'개체로 전달하는 방법은 무엇입니까? 나는 다른 태그, INDI (개별), BIRT (사건), FAMS (배우자), FAMC (어린이)를 파싱하는 파일을 파서로 작업하고있다.다른 클래스의 클래스 변수에 액세스

기본적으로 Person, Event, Family

class Person(): 
    def __init__(self, ref): 
     self._id = ref 
     self._birth : None 

    def addBirth(self, event): 
     self._birth: event 

class Event(): 
    def __init__(self, ref): 
     self._id = ref 
     self._event = None 

    def addEvent(self, event): 
     self._event = event 

     #**event = ['12 Jul 1997', 'Seattle, WA'] (this is generated from a  function outside a class) 

Event 클래스의 self._event를 addBirth 메서드로 전송하여 Person 클래스에 추가하려고합니다. 수업과 수업 보충 수업이 어떻게 작동하는지 거의 알지 못합니다. 도와주세요!

+0

원하는 메소드에 인수를 추가하고 적절한 호출자로부터 전달하면됩니까? – Tobias

답변

0

질문이 있으시면 Event 개체를 Person의 인스턴스에 전달 하시겠습니까?

솔직히 나는 코드의 의도를 이해하지 못하지만 한 클래스 인스턴스에서 다른 클래스 인스턴스로 self을 전달하면됩니다.

self은 현재 인스턴스를 참조합니다.

class Person: 
    def __init__(self): 
     self._events = [] 

    def add_event(self, event) 
     self._events.append(event) 

class Event: 
    def add_to_person(self, person): 
     person.add_event(self) 
0

gettersetter 및 방법을 사용하는 것 같은 상황을 처리하기위한 가장 적절한 방법; 데이터 캡슐화는 OO 프로그래밍에서 중요합니다. 필자는 다른 언어와 비교하여 필자가 생각하는 파이썬에서이 작업이 항상 이루어지는 것은 아닙니다. arg를 호출자에게 반환하거나 args를 호출자로부터 수정하는 것이 유일한 목적 인 클래스에 메서드를 추가하는 것을 의미합니다. 예를

를 들어

는 클래스 AB을 말해봐 및 클래스 B (발신자) 클래스 A에서 변수 x을 사용하고 싶어. 그런 다음 클래스 A은 이러한 상황을 처리하기 위해 getter 인터페이스를 제공해야합니다. 설정하면 동일하게 작동 :

class class_A(): 
    def __init__(self, init_args): 
     x = 0 

    def someMethod(): 
     doStuff() 

    def getX(): 
     return x 

    def setX(val): 
     x = val 

class class_B(): 
    def init(self): 
     init_args = stuff 
     A = class_A(init_args) 
     x = class_A.getX() 

    def someOtherMethod(): 
     doStuff() 

클래스 B 클래스 class_AA, B 그냥 getter 메소드를 호출 할 필요가 인스턴스 객체의 x 속성을 원하는 그래서 경우.

A이 이미 생성 된 인스턴스 객체를 B의 메서드에 전달하려면 Aself을 전달하기 만하면됩니다.