使用 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,但结果相同。
有什么想法吗,如何检索对象然后访问其元素?
谢谢
最佳答案
问题在于您为 testClass 对象
定义了一个 __init__
方法来替换内置方法。如 documentation 中所述,应该创建一个 Parse 对象,如下所示:
class GameScore(Object):
pass
欢迎您向类添加额外的、特定于应用程序的方法,但如果您替换 __init__
方法(就像您对 __init__(self, param)
所做的那样) ),当该对象从 Parse 获取返回值时,将无法再构建该对象。
在类中设置 testId
的正确方法是将其作为命名参数提供:
class testClass(Object):
pass
testObj = testClass(testId=param)
<小时/>
现在,假设您确实希望在类初始化时执行某些行为:例如,在您的 __init__
中,您需要提供 testId
,并且您已经拥有了它每次创建对象时记录一条消息。您可以通过编写 __init__
方法来完成此操作,然后在完成后调用父类(super class)的 __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)
关于Python解析模块执行Query.filter或Query.get时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292220/