将值传递到另一个类

时间:2012-12-28 14:30:09

标签: python

我有一个名为msg.data [2]的数据数组,其中我使用了pubsub,我现在想将这些数据传递给PlotCanvasExample类

这是我称之为

的地方
self.pubsubText.SetLabel("This is the Contact Map for the chain "+msg.data[0]+" in the PDB file "+msg.data[1])
    frame = self.GetParent()
    sizer = wx.BoxSizer(wx.VERTICAL)
    self.canvas = PlotCanvasExample(self,0, size=(100,100))
    sizer.Add(self.canvas,1,wx.EXPAND,0)

这是班级本身

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size):
            plot.PlotCanvas.__init__(self,parent,id,style=wx.BORDER_NONE, size=(300,200))
            self.data = [(1,2),(23,2)]
            line = plot.PolyMarker(self.data)
            gc = plot.PlotGraphics([line],"CM view", "x-axis","y axis")
            self.Draw(gc, xAxis=(0,50), yAxis=(0,50))

如何将变量msg.data传入此类

我是python的新手,所以解释如何做到这一点会很好,所以我可以理解下次怎么做

4 个答案:

答案 0 :(得分:1)

您可以将setData方法添加到PlotCanvasExample类并使用此方法吗?

def setData(data):
    self.data = data

或者如果在对象创建时需要此参数,可以将此参数添加到PlotCanvasExample的init方法。

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size, data):  

答案 1 :(得分:0)

class P...:
    def __init__(self, parent, id, size, data):
        self.data = data 
        ...

答案 2 :(得分:0)

试试这段代码......

self.pubsubText.SetLabel("This is the Contact Map for the chain "+msg.data[0]+" in the PDB file "+msg.data[1])
    frame = self.GetParent()
    sizer = wx.BoxSizer(wx.VERTICAL)
    self.canvas = PlotCanvasExample(self,0, size=(100,100), msg.data)
    sizer.Add(self.canvas,1,wx.EXPAND,0)

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size, msgdata):
            self.msgdata = msgdata
            plot.PlotCanvas.__init__(self,parent,id,style=wx.BORDER_NONE, size=(300,200))
            self.data = [(1,2),(23,2)]
            line = plot.PolyMarker(self.data)
            gc = plot.PlotGraphics([line],"CM view", "x-axis","y axis")
            self.Draw(gc, xAxis=(0,50), yAxis=(0,50))

希望这有帮助。

安德鲁

答案 3 :(得分:0)

需要传递给类的参数应该放在__init__函数中。

以下是Classes

上的Python文档

代码行def __init__(self,parent,id,size):是您需要更改以添加新参数的内容。

下次创建此课程时,您可以在self.canvas - PlotCanvasExample()

中指定该课程

示例:

类别:

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size,data):

代码:

self.canvas = PlotCanvasExample(self,0, size=(100,100), msg.data[2])

如果您是Python的新手,我建议您查看文档。另请查看PEP8在此处发布代码时会有所帮助。

:)