1

使用 www.parse.com 并遵循以下说明:

https://github.com/dgrtwo/ParsePy

Python 2.7.3(默认,2012 年 8 月 1 日,05:14:39)

我创建了一个名为 testClass 的类

class testClass(Object):
    """Create a Test Class Object"""
    testId = ''
    def __init__(self,param):
        logging.info("testClass() New testClass object created()")
        print 'testClass() New testClass object created()'
        self.testId = param

我可以使用以下方法在 Parse 中创建新对象:

def testClassFromParse(param):
    try:
        testObj = testClass(param)
        testObj.save()
        hello = testClass.Query.filter(objectId='TQysq4uOp6')
        print type(hello)
        print hello
    except Exception,e:
        print traceback.format_exc()
        print 'testClassFromParse() Error'

每次执行时,都会在 Parse Dashboard 中成功创建新行,但是当我想根据示例使用 testId 或 objectId 检索对象时,我得到:

testClass() New testClass object created()
<class 'parse_rest.query.Queryset'>


File "/usr/local/lib/python2.7/dist-packages/parse_rest/query.py", line 58, in get
    return self.filter(**kw).get()
  File "/usr/local/lib/python2.7/dist-packages/parse_rest/query.py", line 142, in get
    results = self._fetch()
  File "/usr/local/lib/python2.7/dist-packages/parse_rest/query.py", line 117, in _fetch
    return self._manager._fetch(**options)
  File "/usr/local/lib/python2.7/dist-packages/parse_rest/query.py", line 41, in _fetch
    return [klass(**it) for it in klass.GET(uri, **kw).get('results')]
TypeError: __init__() got an unexpected keyword argument 'objectId'

testClassFromParse() Error

我可以通过我的仪表板 objectId 确认存在。还尝试了不同的属性:testID,但结果相同。

任何想法,如何检索对象然后访问其元素?

谢谢

4

1 回答 1

3

问题是您定义了一个替换内置__init__方法的方法。testClass Object文档中所述,Parse 对象应创建为:

class GameScore(Object):
    pass

欢迎您向您的类添加额外的、特定于应用程序的方法,但是如果您替换该__init__方法(就像您对 所做的那样__init__(self, param)),当 Object 从 Parse 返回值时将无法再构建它。

在您的类中设置的正确方法testId是将其作为命名参数提供:

class testClass(Object):
    pass

testObj = testClass(testId=param)

现在,假设您在类的初始化时确实需要一些行为:例如,在您的__init__要求中,您需要testId提供,并且每次创建对象时都会记录一条消息。您可以通过编写一个__init__方法,然后在完成后调用超类的__init__方法来做到这一点:

class testClass(Object):
    """Create a Test Class Object"""
    def __init__(self, **kwargs):
        logging.info("testClass() New testClass object created()")
        print 'testClass() New testClass object created()'

        assert "testId" in kwargs

        Object.__init__(self, **kwargs)
于 2013-10-10T18:59:48.817 回答