无法将 Lambda 函数分配给方法

问题描述

我有一个来自 Google Api 的 python 脚本,但是当我运行它时,我在网上看到 error: Cannot assign to a method 指出:

request.get_method = lambda: method

代码块(完整代码https://cloud.google.com/identity/docs/how-to/create-devices):

def create_delegated_credentials(user_email):
  credentials = service_account.Credentials.from_service_account_file(
      SA_FILE,scopes=['https://www.googleapis.com/auth/cloud-identity.devices'])

  delegated_credentials = credentials.with_subject(user_email)

  return delegated_credentials

request = google.auth.transport.requests.Request()
dc = create_delegated_credentials(ADMIN_EMAIL)
dc.refresh(request)
print('Access token: ' + dc.token + '\n')

header = {...}
body = {...}

serialized_body = json.dumps(body,separators=(',',':'))

request_url = BASE_URL + 'devices'
print('Request URL: ' + request_url)
print('Request body: ' + serialized_body)

serialized_body = json.dumps(body,':'))
request = urllib.request.Request(request_url,serialized_body,headers=header)
request.get_method = lambda: 'POST'                                   ############HERE

有人知道如何解决这个问题吗?

解决方法

您可以直接在 {{1} 的构造中设置 mypy,而不是修改 Request 对象(method 有助于出错,因为通常对函数的赋值是错误的或monkeypatch hack) 1}}:

Request

这个参数是python3.3添加的