1

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

我在这里遇到了一些代码,但除非我弄错了,否则它不适用于 expando 属性:Copy an entity in Google App Engine datastore in Python without known property names at 'compile' time

谢谢!

4

1 回答 1

2

这是包含动态属性的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)
于 2011-05-04T11:07:44.680 回答