NamError: имя 'self' не определено - PullRequest
0 голосов
/ 06 марта 2019

Если я пытаюсь запустить этот скрипт, я получаю сообщение об ошибке «NamError: Имя« self »не определено», пожалуйста, помогите мне решить эту проблему, я новичок в Python. Я пытался решить эту проблему, читая разные источники, но это не сработало.

#!/usr/bin/env python3
import hmac
import hashlib
import base64
import argparse

# Values that are required to calculate the signature. These values should
# never change.
DATE = "11111111"
SERVICE = "ses"
MESSAGE = "SendRawEmail"
TERMINAL = "aws4_request"
VERSION = 0x04

def sign(key, msg):
    return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest()

def calculateKey(secretAccessKey, region):
    signature = sign(("AWS4" + secretAccessKey).encode('utf-8'), DATE)
    signature = sign(signature, region)
    signature = sign(signature, SERVICE)
    signature = sign(signature, TERMINAL)
    signature = sign(signature, MESSAGE)
    signatureAndVersion = bytes([VERSION]) + signature
    smtpPassword = base64.b64encode(signatureAndVersion)
    print(smtpPassword.decode('utf-8'))

def main(self):
    parser = argparse.ArgumentParser(description='Convert a Secret Access Key for an IAM user to an SMTP password.')
    parser.add_argument('--secret')
    help='my_access_id_here',
    required=True,
    action="store"
    parser.add_argument('--region')
    help='us-west-2',
    required=True,
    choices=['us-east-1','us-west-2','eu-west-1'],
    action="store"
    args = parser.parse_args()

    calculateKey(args.secret,args.region)

main(self)

1 Ответ

0 голосов
/ 06 марта 2019

Вам нужно удалить self из main (), поскольку self требуется только в том случае, если это метод класса, а обычные функции не имеют self в качестве первого аргумента.

Цитата из документации:

Часто первый аргумент метода называется self. Это не что иное, как соглашение: имя self не имеет абсолютно никакого особого значения для Python.

см. Ниже документ для получения дополнительной информации

Документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...