Доступ к переменным класса из другого класса

Как вы получаете доступ к экземпляру в объекте и передаете его другому «основному» объекту? Я работаю с парсером для файла, который анализирует разные теги, INDI (индивидуальный), BIRT (событие), FAMS (супруг), FAMC (дети)

В основном есть три класса: Человек, Событие, Семья.

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)

Я хочу передать self._event из класса Event в метод addBirth, чтобы добавить его в мой класс person. У меня мало знаний о том, как работают классы и наследования классов. Пожалуйста помоги!


person Community    schedule 02.12.2016    source источник
comment
Просто добавить аргумент к нужным методам и передать его от соответствующего вызывающего объекта?   -  person    schedule 02.12.2016


Ответы (2)


Насколько я понимаю ваш вопрос, вы хотите передать (например) объект 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)
person Community    schedule 02.12.2016

Самый правильный способ справиться с такими ситуациями — использовать методы getter и setter; инкапсуляция данных важна в объектно-ориентированном программировании. Я не всегда вижу, чтобы это было сделано в Python там, где, по моему мнению, должно быть по сравнению с другими языками. Это просто означает добавление методов к вашим классам, единственной целью которых является возврат аргументов вызывающей стороне или изменение аргументов вызывающей стороны. Например

Допустим, у вас есть классы A и B, а класс B (вызывающий) хочет использовать переменную x из класса A. Затем класс 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 требуется свойство x экземпляра объекта A класса class_A, B просто нужно вызвать метод getter.

Что касается передачи экземпляров самих объектов, скажем, если вы хотите, чтобы A передал уже созданный экземпляр объекта самого себя методу в классе B, тогда вы просто передадите self.

person pretzlstyle    schedule 02.12.2016