我的问题是,该行后:-> self.__serverUrl = serverUrl
Python的 - 对象属性分配失败
这是为什么我使用节奏口技的情况下?: *** AttributeError: Client instance has no attribute '__serverUrl'
详细
与Salesforce互动,我得到一个错误
*** AttributeError: Client instance has no attribute '_Client__serverUrl'
我想知道为什么这个字段被设置之前被访问,所以我加了pdb.set_trace()
认为我能找到一些答案。这是我看到的(注意行67):
(Pdb)
--Call--
> /app/env/local/lib/python2.7/site-packages/beatbox/_beatbox.py(65)useSession()
-> def useSession(self, sessionId, serverUrl):
(Pdb) l
64 # initialize from an existing sessionId & serverUrl, useful if we're being launched via a custom link
65 -> def useSession(self, sessionId, serverUrl):
66 self.sessionId = sessionId
67 self.__serverUrl = serverUrl
68 (scheme, host, path, params, query, frag) = urlparse(self.__serverUrl)
69 self.__conn = makeConnection(scheme, host)
70
我检查serverUrl的值,并且全部都是它应该的。然后我到达第67行,让它执行并认为serverUrl
的值将在self.__serverUrl
中。显然不是....
> /app/env/local/lib/python2.7/site-packages/beatbox/_beatbox.py(67)useSession()
-> self.__serverUrl = serverUrl
(Pdb) n
> /app/env/local/lib/python2.7/site-packages/beatbox/_beatbox.py(68)useSession()
-> (scheme, host, path, params, query, frag) = urlparse(self.__serverUrl)
(Pdb) self.__serverUrl
*** AttributeError: Client instance has no attribute '__serverUrl'
发生了什么!?在这里这不应该发生。看起来这项任务只是悄然失败。为什么这个值不在这里?
来源
我正在使用的源代码是here
我创建了一个口技客户端并登录
svc = PythonClient()
svc.login(username, password)
这就要求python_client.Client的登录方法。 python_client.Client.login调用它的login方法的超_beatbox.Client,它看起来像这样:
class Client:
def __init__(self, serverUrl=None):
...
# login, the serverUrl and sessionId are automatically handled, returns the loginResult structure
def login(self, username, password):
lr = LoginRequest(self.serverUrl, username, password).post()
self.useSession(str(lr[_tPartnerNS.sessionId]), str(lr[_tPartnerNS.serverUrl]))
return lr
# initialize from an existing sessionId & serverUrl, useful if we're being launched via a custom link
def useSession(self, sessionId, serverUrl):
self.sessionId = sessionId
self.__serverUrl = serverUrl
(scheme, host, path, params, query, frag) = urlparse(self.__serverUrl)
self.__conn = makeConnection(scheme, host)
处理分配的发生在_beatbox.Client.useSession,这是对象的超svc
这是它吗?是'_Client__serverUrl'还是'__serverUrl'?你可能是名字的受害者... – mgilson 2013-03-07 19:21:07
在这个方法之外,它是_Client_serverUrl,在_serverUrl的方法里面。在类方法中不会发生名称修饰吗? – munk 2013-03-07 19:21:59