我有兩個彼此相關的物體。我希望能夠通過相關屬性訪問一個對象。棉花糖的圓形進口
E.g. A.b_relationship.obj.some_property
如何在不創建循環導入的情況下執行此操作?
# lib.py
class Relationship(object):
def __init__(self, obj):
self.obj = obj
# a.py
class A(object):
b_relationship = Relationship(B)
# b.py
class B(object):
a_relationship = Relationship(A)
爲清楚起見,我添加了這個附加的例子。顯然SQLAlchemy已經用backref
屬性解決了這個問題。我不確定在沒有打破它的運作方式的情況下將這種東西實施到棉花糖中是多麼可行。也許我需要改變我的想法?
from marshmallow import Schema
from marshmallow.fields import String
from project.database import db
class PersonModel(db.Model):
name = db.Column(db.String)
class PetModel(db.Model):
name = db.Column(db.String)
owner = db.relationship('PersonModel', backref='pets')
class PersonSchema(Schema):
name = fields.String(init_arg='some value')
pets = fields.Relationship(related_schema=PetSchema)
class PetSchema(Schema):
name = fields.String()
owner = fields.Relationship(related_schema=PersonSchema)
做一個'__init__'並在那裏導入'A'和'B'。然後,您可以避免在a.py和b.py中導入循環。 [這可能是相關的](http://stackoverflow.com/q/13444900/198633) – inspectorG4dget
你說你有兩個彼此相關的對象,但你在課堂上設置關係。雖然類確實是對象,但這似乎不是一個有用的創建鏈接。你想讓A的一個實例與B的一個實例鏈接,反之亦然,或者你想讓這些類鏈接起來嗎?一個級別的鏈接是相當無用的。另外,這些類的實例是如何創建的?它們是一起存在還是獨立創造的? – user2357112
@ user2357112這些類本身不應該鏈接在一起。他們不關心對方。它需要鏈接的_relationship屬性。我稍後鍵入這些字段,然後使用鏈接的obj進行一些計算。 –