Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 传递_init__参数并将其用作类内的变量_Python_Python 3.x - Fatal编程技术网

Python 传递_init__参数并将其用作类内的变量

Python 传递_init__参数并将其用作类内的变量,python,python-3.x,Python,Python 3.x,我试图用三个给定的_uinit__;参数调用AWS IoT调用方法。但不知何故,这些参数无法传递到类本身。从给定的屏幕截图中可以看到,在类中找不到变量端点。我们将非常感谢您的帮助 测试.py AWS_Publishing.py 将“端点”传递到“端点” 谢谢你们的帮助。我设法解决了这个问题。我没有创建类,而是创建了一个函数 测试.py AWS_Publishing.py Python区分大小写。您的参数名为endpoint,您分配的变量为endpoint。这是两个不同的变量。此外,您正在导入模块

我试图用三个给定的_uinit__;参数调用AWS IoT调用方法。但不知何故,这些参数无法传递到类本身。从给定的屏幕截图中可以看到,在类中找不到变量端点。我们将非常感谢您的帮助

测试.py AWS_Publishing.py 将“端点”传递到“端点”


谢谢你们的帮助。我设法解决了这个问题。我没有创建类,而是创建了一个函数

测试.py AWS_Publishing.py
Python区分大小写。您的参数名为endpoint,您分配的变量为endpoint。这是两个不同的变量。此外,您正在导入模块AWS_Publishing,然后尝试直接调用它。您需要在模块内调用该类。所以AWS_Publishing.AWS_Publishing*args。您正在尝试访问类作用域中的端点。但ENDPOINT是一个实例变量,通过self.ENDPOINT访问。。。你的意思是让你的整个代码缩进到_uinit_;下吗?否则就不太清楚了。我试图在testing.py中调用AWS_PublishingAWEndpoint、AWSClientId和Test,并使用类本身中的参数。例如,AWSEndPoint将用于mqtt_connection_builder.mtls_from_path endpoint=endpoint。。。。我已尝试使用self.ENDPOINT,但它也抛出了一个错误:我添加了一个截图,也许它会更清楚我想要实现什么。谢谢。所有的mqtt_连接=。。。代码在类声明时运行,远远早于您发布AWS_WSEndpoint。。。。您将希望将所有代码缩进类的某个方法中,在实例化该类后调用该类。我喜欢您使用此解决方案,因为Python的新手倾向于使用大量的类。可能是因为在Java中,比如说,一切都是类。。。在Python中,类并不总是必需的——就像您的情况一样。使用函数似乎更合适
import AWS_Publishing

AWSEndPoint = "ak2faelus7i02-ats.iot.ap-southeast-1.amazonaws.com"
AWSClientId = ""


publishMessage = AWS_Publishing(AWSEndPoint, AWSClientId, "Test")

publishMessage
from awscrt import io, mqtt, auth, http
from awsiot import mqtt_connection_builder
import time as t
import json

class AWS_Publishing:
    def __init__(self, endpoint, client_id, topic):
        self.ENDPOINT = endpoint
        self.CLIENT_ID = client_id
        self.TOPIC = topic

    PATH_TO_CERT = "certs/device.pem.crt"
    PATH_TO_KEY = "certs/private.pem.key"
    PATH_TO_ROOT = "certs/Amazon-root-CA-1.pem"
    MESSAGE = "Hello World"
    RANGE = 20


# Spin up resources
    event_loop_group = io.EventLoopGroup(1)
    host_resolver = io.DefaultHostResolver(event_loop_group)
    client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)
    mqtt_connection = mqtt_connection_builder.mtls_from_path(
        endpoint=ENDPOINT,
        cert_filepath=PATH_TO_CERT,
        pri_key_filepath=PATH_TO_KEY,
        client_bootstrap=client_bootstrap,
        ca_filepath=PATH_TO_ROOT,
        client_id=CLIENT_ID,
        clean_session=False,
        keep_alive_secs=6
    )
import AWS_Publishing

AWSEndPoint = "ak2faelus7i02-ats.iot.ap-southeast-1.amazonaws.com"
AWSClientId = "test"
Topic = "Testing"

publishAWS = AWS_Publishing.publish(AWSEndPoint, AWSClientId, Topic)

publishAWS
from awscrt import io, mqtt, auth, http
from awsiot import mqtt_connection_builder
import time as t
import json

def publish(ENDPOINT, CLIENT_ID, TOPIC):
    PATH_TO_CERT = "certs/device.pem.crt"
    PATH_TO_KEY = "certs/private.pem.key"
    PATH_TO_ROOT = "certs/Amazon-root-CA-1.pem"
    MESSAGE = "Hello World"
    RANGE = 20

    event_loop_group = io.EventLoopGroup(1)
    host_resolver = io.DefaultHostResolver(event_loop_group)
    client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)
    mqtt_connection = mqtt_connection_builder.mtls_from_path(
        endpoint=ENDPOINT,
        cert_filepath=PATH_TO_CERT,
        pri_key_filepath=PATH_TO_KEY,
        client_bootstrap=client_bootstrap,
        ca_filepath=PATH_TO_ROOT,
        client_id=CLIENT_ID,
        clean_session=False,
        keep_alive_secs=6
    )
    print("Connecting to {} with client ID '{}'...".format(
        ENDPOINT, CLIENT_ID))
    # Make the connect() call
    connect_future = mqtt_connection.connect()
    # Future.result() waits until a result is available
    connect_future.result()
    print("Connected!")
    # Publish message to server desired number of times.
    print('Begin Publish')
    for i in range(RANGE):
        data = "{} [{}]".format(MESSAGE, i + 1)
        message = {"message": data}
        mqtt_connection.publish(topic=TOPIC, payload=json.dumps(
            message), qos=mqtt.QoS.AT_LEAST_ONCE)
        print("Published: '" + json.dumps(message) +
              "' to the topic: " + TOPIC)
        t.sleep(0.1)
    print('Publish End')
    disconnect_future = mqtt_connection.disconnect()
    disconnect_future.result()