从其他python方法访问方法变量

2024-05-16 20:05:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我访问有问题客户端.close()在以下代码的closeconnection()的readholdingregisters()中:

class EnergyMeter:
    def __init__(self, model, gatewayipaddress, port ,deviceid):
        self.model = model
        self.gatewayipaddress = gatewayipaddress
        self.port = port
        self.deviceid = deviceid

    def readholdingregisters(self, startingregister, numberofregisters):
        from pymodbus3.client.sync import ModbusTcpClient as ModbusClient
        client = ModbusClient(self.gatewayipaddress, port=self.port)
        client.connect()
        if #some code here:
            #some other code here
            return concatResult
        else:
            return otherResult

这里我要关闭连接客户端.connect()从readholdingregisters():

    def closeconnection(self):
        EnergyMeter.readholdingregisters().client.close()??????????????????

你能给我一个好的解决办法吗?你知道吗


Tags: selfclient客户端closemodelportdefconnect
2条回答
from pymodbus3.client.sync import ModbusTcpClient as ModbusClient

class EnergyMeter:
    def __init__(self, model, gatewayipaddress, port ,deviceid):
        self.model = model
        self.gatewayipaddress = gatewayipaddress
        self.port = port
        self.deviceid = deviceid
        self.client = ModbusClient(self.gatewayipaddress, port=self.port)
        self.client.connect()

    def readholdingregisters(self, startingregister, numberofregisters):
        if #some code here:
            #some other code here
            return concatResult
        else:
            return otherResult

然后,要关闭,您可以调用energy_meter.client.close()来获取您想要关闭的任何energy_meter。你知道吗

通常的方法是,使客户机成为类的datamember。你知道吗

        self.client = ModbusClient(self.gatewayipaddress, port=self.port)
        self.client.connect()
        #some code here


    def closeconnection(self):
        self.readholdingregisters()
        self.client.close()

但是,如果您想通过类EnergyMeter.readholdingregisters()访问方法

然后它应该声明为staticmethodclassmethod,并且这个方法应该返回客户机实例。Link

相关问题 更多 >