Уведомления

Группа в Telegram: @pythonsu

#1 Март 23, 2010 13:30:55

callret
От:
Зарегистрирован: 2007-12-24
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

Привет!

Вот собственно проблема:
есть некие экземпляры A и B
есть ф-я bind:

                >>> id(A) is id(B)
>>> False
>>> bind(A, B)
>>> id(A) is id(B)
>>> True
Как реализовать ф-ю bind?



Офлайн

#2 Март 23, 2010 13:55:47

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

Не совсем понятно, что вам нужно. Ибо:

>>> id(a) is id(a)
False
Что в переводе на русский означает: is проверяет, являются ли переменные ссылками на один и тот же объект, я во внутренней механике питона не силен, но приведенный пример показывает, что сравнение вызовов функции id в любом случае не приведет к результату True. Однако с другими функциями такое прокатывает. Хм…



Офлайн

#3 Март 23, 2010 14:00:25

callret
От:
Зарегистрирован: 2007-12-24
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

пардон, id нужно отбросить, загнался
просто A is B



Офлайн

#4 Март 23, 2010 14:14:36

callret
От:
Зарегистрирован: 2007-12-24
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

>>> class z:
x = 0


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

как реализовать ф-ю bind ???????



Офлайн

#5 Март 23, 2010 14:19:38

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

Вот теперь вообще неясно в чем проблема. А чем вам присвоение не угодило? Нравится вам лишние функции городить?



Офлайн

#6 Март 23, 2010 14:31:36

callret
От:
Зарегистрирован: 2007-12-24
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

долго объяснять, в си всё просто - передал ссылку и п…ц
ну не могу я написАть просто =
мне нужно передавать ф-ю и экземпляры



Офлайн

#7 Март 23, 2010 14:43:47

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

Ты просто объект передавай, передастся ссылка.

callret
долго объяснять
жжошь



Отредактировано (Март 23, 2010 14:44:23)

Офлайн

#8 Март 23, 2010 14:57:20

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

Вобщем, как я понимаю, в питоне параметры передаются по значению (во всяком случае опыты говорят об этом). Поэтому предполагаю такой путь:

def bind(a,b):
return a,a
a,b = bind(a,b)
Как-то так, но без четкого понимания зачем это все в голову лезет только такая глупость.



Офлайн

#9 Март 23, 2010 15:09:16

callret
От:
Зарегистрирован: 2007-12-24
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

спасибо, но эт совсем не то
мне нужно чтоб ф-я изменяла экземпляры, которые ей передаются

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



Отредактировано (Март 23, 2010 15:10:42)

Офлайн

#10 Март 23, 2010 15:26:01

callret
От:
Зарегистрирован: 2007-12-24
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

копирование экземпляра

если я не ошибаюсь в си такая ф-я выглядела бы так:
void bind(&a, &b)
{
a = b;
}



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version