2016-07-19 3 views
0

У меня есть основной скрипт, и я импортирую еще один модуль с классом в нем. Когда я создаю экземпляр класса, один из аргументов - y, и поэтому у меня есть эквивалент self.y = y в методе __init__. Теперь проблема в том, что в главном скрипте у меня есть цикл for, который меняет значение y и вызывает метод 'live_plotting' из того же класса. Я обычно должен передать значение y в качестве аргумента снова, и в этом методе есть еще один self.y = y. Это не опрятно, есть ли способ обновления self.y через модули без необходимости повторного ввода в качестве аргумента? Я думал об использовании указателей, но, видимо, все это указатель на python. Может ли кто-нибудь предложить альтернативное решение?Как обновить значение переменной для модулей Python?

+0

Мы выиграли Невозможно помочь вам с таким неопределенным вопросом. Предоставьте код, который вы написали до сих пор, ожидаемый ввод и вывод, а также описание того, почему он не работает. –

+0

@BenjaminHodgson Я не могу предоставить весь код, потому что он слишком много. Основная структура есть, и я задаю вопрос об обновлении переменных по модулю, а не о моем коде. – marjak

+0

Также код требует знания matplotlib, поэтому обычный программист этого не понял. Поэтому я задаю общий вопрос о модулях. – marjak

ответ

2

Я не уверен, что это то, что вы хотите, но из моего понимания вы хотите обновить значение self.y без метода?

Это будет сделано путем выполнения

object_name.y = new_value 

где object_name имя, которое вы дали экземпляр вашего класса, видя, как себя переменные, объявленные в __init__ являются атрибуты, которые принадлежат к этому экземпляру класса ,

0

Из того, что я понял, мутатор не то, что вы ищете. Мутатор - это функция внутри класса, которая обеспечивает доступ к атрибуту и ​​изменяет его значение.

Я думаю, что в вашем коде вы хотите использовать y, как если бы self.y и y, где были связаны друг с другом. Но когда вы даете y в качестве аргумента функции, то self.y = yy в функции является копией y, которую вы передали в качестве аргумента. затем self.y = y возьмите значение скопированного y и сохраните его в self.y.

После instanciating вашего объекта:

my_instance = class(x,y) 
#if you want to modify my_instance.y 
my_instance.y = value 

или с мутатором в классе:

def set_y(self,value): 
    self.y=value 

затем в главном, когда вы хотите изменить у:

my_instance.set_y(value) 
Смежные вопросы