Найти - Пользователи
Полная версия: копирование экземпляра
Начало » Python для новичков » копирование экземпляра
1 2 3
callret
Привет!

Вот собственно проблема:
есть некие экземпляры A и B
есть ф-я bind:
                >>> id(A) is id(B)
>>> False
>>> bind(A, B)
>>> id(A) is id(B)
>>> True
Как реализовать ф-ю bind?
dartNNN
Не совсем понятно, что вам нужно. Ибо:
>>> id(a) is id(a)
False
Что в переводе на русский означает: is проверяет, являются ли переменные ссылками на один и тот же объект, я во внутренней механике питона не силен, но приведенный пример показывает, что сравнение вызовов функции id в любом случае не приведет к результату True. Однако с другими функциями такое прокатывает. Хм…
callret
пардон, id нужно отбросить, загнался
просто A is B
callret
>>> class z:
x = 0


>>> A, B = z(), z()
>>> A is B
False
>>> A = B
>>> A is B
True
только вместо A = B - bind(A,B)

как реализовать ф-ю bind ???????
dartNNN
Вот теперь вообще неясно в чем проблема. А чем вам присвоение не угодило? Нравится вам лишние функции городить?
callret
долго объяснять, в си всё просто - передал ссылку и п…ц
ну не могу я написАть просто =
мне нужно передавать ф-ю и экземпляры
pasaranax
Ты просто объект передавай, передастся ссылка.

callret
долго объяснять
жжошь
dartNNN
Вобщем, как я понимаю, в питоне параметры передаются по значению (во всяком случае опыты говорят об этом). Поэтому предполагаю такой путь:
def bind(a,b):
return a,a
a,b = bind(a,b)
Как-то так, но без четкого понимания зачем это все в голову лезет только такая глупость.
callret
спасибо, но эт совсем не то
мне нужно чтоб ф-я изменяла экземпляры, которые ей передаются
>>> def bind(a, b):
a = b
return a is b

>>> bind(A, B)
True
>>> A is B
False
я понимаю почему такой результат
но вопрос остается в силе:
>>> bind(A, B)
>>> A is B
True
callret
если я не ошибаюсь в си такая ф-я выглядела бы так:
void bind(&a, &b)
{
a = b;
}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB