передача значения в другой класс

У меня есть массив данных, называемый msg.data [2], где я использовал pubsub i теперь хочу передать эти данные в класс 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, поэтому объяснение того, как это сделать, было бы неплохо, поэтому я могу понять, как это сделать в следующий раз

0
nl ja de

4 ответы

вы можете добавить метод setData в класс PlotCanvasExample и, возможно, использовать этот метод?

def setData(data):
    self.data = data

или если вам нужен этот параметр при создании объекта, вы можете добавить этот параметр к методу init метода PlotCanvasExample.

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size, data):  
1
добавлено
class P...:
    def __init__(self, parent, id, size, data):
        self.data = data 
        ...
0
добавлено

Аргументы, которые необходимо передать классу, должны быть помещены в функцию __ init __ .

Here is the Python documentation on Classes

строка кода def __init __ (self, parent, id, size): - это то, что вам нужно изменить, чтобы добавить новый параметр в.

When you create this class next time you can assign it in the 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 , это поможет при размещении кода здесь.

:)

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))

Надеюсь это поможет.

Андрей

0
добавлено
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community