0

オブジェクト内のインスタンスにアクセスして、それを別の「メイン」オブジェクトに渡すにはどうすればよいですか? INDI(個人)、BIRT(イベント)、FAMS(配偶者)、FAMC(子供)など、さまざまなタグを解析するファイルのパーサーを使用しています。

基本的に、Person、Event、Family の 3 つのクラスがあります。

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

あなたの質問を理解できたら、(たとえば)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 に答える
0

このような状況を処理する最も適切な方法は、getterandsetterメソッドを使用することです。オブジェクト指向プログラミングでは、データのカプセル化が重要です。他の言語と比較して、Python でこれが行われているとは限りません。これは単に、引数を呼び出し元に返すか、呼び出し元からの引数を変更することだけを目的とするメソッドをクラスに追加することを意味します。例えば

classABがあり、 class (呼び出し元) がclassBの変数を使用したいとします。その場合、クラスはそのような状況を処理するためのインターフェースを提供する必要があります。あなたが同じように働く設定:xAAgetter

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()

したがって、 classが class のインスタンス オブジェクトのプロパティをB必要とする場合は、メソッドを呼び出すだけで済みます。xAclass_ABgetter

オブジェクト自体のインスタンスを渡す限り、たとえばA、既に作成されたそれ自体のインスタンス オブジェクトを class のメソッドにB渡したい場合は、単に を渡しselfます。

于 2016-12-02T16:25:51.710 に答える