Python 循环引用问题 :

标签 python circular-reference

我得到:

ImportError: cannot import name Image (from image_blob.py)

请帮助我,谢谢:s

我的代码:

图像.py:

from google.appengine.ext import db
from app.models.item import Item

class Image(Item):
    # imports
    from app.models.image_blob import ImageBlob
    #from app.models.user import User
    #from list_user import ListUser # is needed in order to have the references

    # references
    #uploaded_by_user = db.ReferenceProperty(User, required = True)
    large_image = db.ReferenceProperty(ImageBlob, required = True)
    small_image = db.ReferenceProperty(ImageBlob, required = True)

    # image info
    title = db.StringProperty(required = True)
    description = db.StringProperty(required = False)

    # metadata


    # relations

图像_blob:

from google.appengine.ext import db


class ImageBlob(db.Model):
    from app.models.image import Image

    data = db.BlobProperty(required = True)
    image = db.ReferenceProperty(Image, required = True)

最佳答案

您尝试在处理整个 image.py 之前从 image_blob.py 导入。在发生 from app.models.item import Item 时,class Image 尚未定义,因此还无法导入(整个类定义必须在实际定义符号之前处理完毕。

对此有一个简单的解决方案:不要在 ImageBlob 上定义 image 属性。 AppEngine 的模型自动为您定义一个向后引用,因此当您将 ImageBlob 添加到 Image 时,它会自动在ImageBlob 引用回引用它的 Image 集合(在您当前的用例中,其大小应为 1)。

关于Python 循环引用问题 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065117/

相关文章:

python - 使用本地依赖项用诗歌构建可安装的 tar.gz/whl

c# - 使用什么序列化程序(到 xml)进行循环引用和自定义字段?

未调用 C++/CX D'tor

c# - 为什么 C# 中的命名空间允许循环依赖?

python - 如何在没有第三方库的情况下使用 python 验证 xml?

python - 数据文件夹应该如何在 cnn 模型中将输入作为 (x-train, y-train), (x-test, y-test)

python - 有没有办法简化这个 if-elif-else 链? ( python 初学者)

python - 调用 strip() 后将 split() 转换为 dict()

objective-c - Objective-C 和 clang 中的循环引用

Java:使用反射转储对象信息时如何避免循环引用?