使用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检索Object时,我得到:
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
我可以确认通过我的Dashboard objectId存在。 还尝试使用不同的属性:testID,但结果相同。
任何想法,如何检索对象然后访问其元素?
由于
答案 0 :(得分:3)
问题是您为替换内置的__init__
定义了testClass Object
方法。如documentation中所述,应该将Parse对象创建为:
class GameScore(Object):
pass
欢迎您向类中添加额外的特定于应用程序的方法,但如果替换__init__
方法(就像使用__init__(self, param)
一样),则无法再构建对象从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)