App Engine 中 Python 中的克隆和 Expando 类对象

发布于 2024-11-05 13:11:16 字数 325 浏览 2 评论 0原文

在 Google App Engine 上使用 Python 时,克隆(复制) Expando 类对象的好方法是什么?

我在这里遇到了一些代码,但除非我弄错了,否则它不适用于 Expando 属性: 在“编译”时不知道属性名称的情况下,在 Python 中复制 Google App Engine 数据存储区中的实体

谢谢!

What is a good way to clone (make a copy of) an Expando class object when using Python on Google App Engine?

I came across some code on here, but unless I'm mistaken, it does not work on expando properties: Copy an entity in Google App Engine datastore in Python without knowing property names at 'compile' time

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

極樂鬼 2024-11-12 13:11:16

这是 包含动态属性的 Nick 函数

def clone_entity(e, **extra_args):
  """Clones an entity, adding or overriding constructor attributes.

  The cloned entity will have exactly the same property values as the original
  entity, except where overridden. By default it will have no parent entity or
  key name, unless supplied.

  Args:
    e: The entity to clone
    extra_args: Keyword arguments to override from the cloned entity and pass
      to the constructor.
  Returns:
    A cloned, possibly modified, copy of entity e.
  """
  klass = e.__class__
  props = dict((k, v.__get__(e, klass)) for k, v in klass.properties().iteritems())
  props.update(dict([(k, getattr(e, k)) for k in e.dynamic_properties()]))
  props.update(extra_args)
  return klass(**props)

Here's a revised version of Nick's function that includes dynamic properties:

def clone_entity(e, **extra_args):
  """Clones an entity, adding or overriding constructor attributes.

  The cloned entity will have exactly the same property values as the original
  entity, except where overridden. By default it will have no parent entity or
  key name, unless supplied.

  Args:
    e: The entity to clone
    extra_args: Keyword arguments to override from the cloned entity and pass
      to the constructor.
  Returns:
    A cloned, possibly modified, copy of entity e.
  """
  klass = e.__class__
  props = dict((k, v.__get__(e, klass)) for k, v in klass.properties().iteritems())
  props.update(dict([(k, getattr(e, k)) for k in e.dynamic_properties()]))
  props.update(extra_args)
  return klass(**props)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文