从Python中的另一个类访问类中的函数

时间:2014-05-13 11:52:54

标签: python

class Read_serial:
    i=0
    file = open('nmea.txt', 'r')
    txt = file.read()
    #print txt
    s=txt.splitlines()

    for data in s:
                gpgga=nmea.GPGGA()
                gpgga.parse(data)
                lat=gpgga.latitude

嗨..我是Python新手。我有一个Read_serial类,它读取一组GPS数据。它存储在变量lat中。 我想在另一个类中访问这个'lat',其中我有一个在GTK窗口中显示它的值的函数。随着'lat'值的改变,窗口中的值也应该改变。请为此提出解决方案。

1 个答案:

答案 0 :(得分:2)

您没有正确使用该课程。类用于存储和操作数据的对象。通常是必须保留状态的东西。

class Point(object)
    def __init__(self, x=0, y=0):
        super().__init__()

        self.x = x
        self.y = y
    # end constructor

    def move(self, x, y):
        self.x = x
        self.y = y
...

所以你可能只需要一个函数

def read_gps(filename)
    """Read a file with nmea gps messages."""

    lats = []        
    with open(filename, "r") as file:
         for line in file.readlines():
             gpgga=nmea.GPGGA()
             gpgga.parse(line)
             lat = gpgga.latitude

             # do something with lat
             # call class function.
             #     point = Point() # If called somewhere else before the for loop.
             #     point.move(lat, 0)


             # GUIs like PySide have signals that you can emit.
             lats.append(lat)
    # end with (close file)

    return lats
# end read_gps


latitude_vals = read_gps("nmea.txt")
# use the returned value

此外还有一个更容易使用的nmea2库。同时读取文件非常快,文件是静态对象,因此您可能希望使用pyserial直接连接到gps。