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)

我想将 self._event 从 Event 类转移到 addBirth 方法中,以将其添加到我的 person 类中。我对类和类继承如何工作知之甚少。请帮忙!

4

2 回答 2

0

处理这种情况最合适的方法是使用gettersetter方法;数据封装在 OO 编程中很重要。与其他语言相比,我并不总是在我认为应该在 Python 中做到这一点。它只是意味着向您的类添加方法,其唯一目的是将 args 返回给调用者,或从调用者修改 args。例如

假设您有 classAB,并且 class B(调用者)想要使用xclass中的变量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()

因此,如果 classB想要classx的实例对象A的属性class_AB只需要调用该getter方法即可。

至于传递对象本身的实例,假设您想将自己A已经创建的实例对象传递给 class 中的方法B,那么实际上,您只需传递self.

于 2016-12-02T16:25:51.710 回答
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)
于 2016-12-02T16:24:09.457 回答