如何访问对象中的实例并将其传递给另一个' main'宾语?我正在使用解析器来处理解析不同标签的文件,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类中。我对班级和班级的干预如何运作知之甚少。请帮忙!
答案 0 :(得分: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)
答案 1 :(得分:0)
处理此类情况的最恰当方法是使用getter
和setter
方法;数据封装在OO编程中很重要。与其他语言相比,我并不总是在Python中看到这样做。它只是意味着向类添加方法,其唯一目的是将args返回给调用者,或者从调用者修改args。例如
假设您有课程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
的{{1}}属性,class_A
只需要调用B
方法。
就传递对象本身的实例而言,假设您希望getter
将已经创建的实例对象传递给类A
中的方法,那么实际上,您只需传递{ {1}}。