自变量在不同类中运行函数后未更新

时间:2019-06-28 15:32:21

标签: python function class self

我在文件(Display.py)中有一个类(AngleInfo),带有一个自变量(WheelAngle),该自变量在运行函数(GetAngle)后不会更新。该函数在第二个文件(ManageInfo.py)中的类中被调用,并具有基于事件的触发器。当我尝试在Display.py的第二个类(AngleProcess)中使用WheelAngle时,该值不会从初始化更新。在MessageHandler类中触发该函数时,它可以访问GetAngle声明中由m表示的原始数据。

在另一个文件(Radar.py)中还有另一个类(SpeedInfo),其中在ManageInfo类中运行自变量(VehicleSpeed)后,该自变量(VehicleSpeed)正在更新。

工作用例具有线程系统,但是在非工作用例中将其复制后,我发现没有任何改进。我不明白为什么WheelAngle不在类中进行更新,并且与工作案例进行比较并不能使我更接近答案。

因此,基本上,在我运行GetAngle之后,我看到WheelAngle在该函数中具有正确的值,但是当我在Display.py文件的AngleProcess类的UpdatePlot函数中调用自变量时,便得到了初始值。我什至尝试在AngleInfo类中创建一个不同的函数来访问WheelAngle,然后在AngleProcess类的UpdatePlot函数中调用此函数,但是结果是相同的。

请记住一个可行的示例,因为它需要发送实时数据。而且,即使似乎未使用WheelAngle和VehSpeed,为简化起见,下面的代码也被省略了!

有什么想法吗?下面是代码示例。谢谢!

Display.py

class AngleInfo():
    def __init__(self):
        self.WheelAngle = 0

    def GetAngle(self,m):
        self.WheelAngle = float(m) # Angle is correct

class AngleProcess():
    def __init__(self):
        self.AngleInfoObj = AngleInfo()

    def UpdatePlot(self,tupledata):
        WheelAngle = self.AngleInfoObj.WheelAngle # Angle is set to initial

Radar.py

class SpeedInfo(threading.Thread):
    def __init__(self,page):
        threading.Thread.__init__(self)
        self.daemon = True
        self.start()

        self.VehSpeed = 0

    def run(self):
        VehSpeed = self.VehSpeed # Speed is correct

    def GetSpeed(self,m):
        self.VehSpeed = float(m) # Speed is correct

ManageInfo.py

from AurixCAN import Receiver
from Radar import SpeedInfo
from Display import AngleInfo

class MessageHandler:
    def __init__(self,page):
        self.SpeedInfo = SpeedInfo(page)
        self.AngleInfo = AngleInfo()

        DataSet = Receiver(canIDsandCalls={0xE:[self.SpeedInfo.GetSpeed,self.AngleInfo.GetAngle]})

0 个答案:

没有答案