Форум сайта python.su
Я знаю что это не “по питонически”, но в полный рост встал вопрос:
Возможно ли в питоне работать с переданным методу аргументом, а не с его копией?
например
def incrementor(self,val):
val+=1
if __name__==“__main__”:
a=21
incrementor(a)
#вариант вида а=incrementor(a) с использованием return в методе incrementor не подходит. Честное слово.
print a
Нужно чтобы печатало 22 :)
Как передать методу переменную, а не ее копию?
В С это решается указателями, и в принципе можно подцепить нужный модуль к питону, но у меня с указателями плохие ассоциации :/
Кроме того, ощущивается что должно быть более прямое решение с помощью родных возможностей языка.
Заранее спасибо за любой ответ, совет, линк или критику.
Офлайн
Вообще в данном конкретном случае это обходится, но на первых этапах вопрос встал, и теперь (на будущее) интересно, насколько такое возможно. Прекрасно понимаю что это кривой путь.
Пока описывал существующую задачу понял что мне пора в отпуск :) потому что все совсем просто :)
Нужно, чтобы в пределах одного класса несколько методов могли независимо (во времени) друг от друга изменять один строчный атрибут. При этом отдельные символы атрибута должны переключатся с заданными (разными) частотами.
Решается запуском нескольких Thread - для каждого из битов.
Но общее решение первой задачи (или намеки на общее решение) всеравно было б интересно :)
Офлайн
denzПострочное выполнение программы.
def incrementor(self,val):
val+=1
if __name__==“__main__”:
a=21
incrementor(a)
#вариант вида а=incrementor(a) с использованием return в методе incrementor не подходит. Честное слово.
print a
a = 21
incrementor(a) def incrementor(self,val):
val+=1
x = 1 print id(x) x += 1 print id(x)
Офлайн