IE отображает предупреждение active x
и запрашивает разрешение, если вы разрешаете ему запускать или нет. Чтобы преодолеть это, единственным решением является:
ActiveX
элементы управления и плагины. ActiveX
и нажмите «Включить» или «Подсказка». ActiveX
, отмеченных как безопасные для сценариев, и нажмите «Включить» или «Подсказка». Невозможно преодолеть эту проблему, кроме изменения параметров вручную Internet Explorer. Попробуйте проверить, нормально ли работает плагин при изменении настроек. Если его все еще не работает или не отображается какое-либо предупреждение, попробуйте проверить консоль на наличие других ошибок, которые не связаны с active x
. Удачи!
Это диктат memo
, где сохраняется соответствие id-объектам, чтобы идеально реконструировать сложные графики объектов. Сложно "использовать код", но попробуем:
>>> import copy
>>> memo = {}
>>> x = range(5)
>>> y = copy.deepcopy(x, memo)
>>> memo
{399680: [0, 1, 2, 3, 4], 16790896: 3, 16790884: 4, 16790920: 1,
438608: [0, 1, 2, 3, 4, [0, 1, 2, 3, 4]], 16790932: 0, 16790908: 2}
>>>
и
>>> id(x)
399680
>>> for j in x: print j, id(j)
...
0 16790932
1 16790920
2 16790908
3 16790896
4 16790884
так, чтобы идентификаторы были абсолютно верны. Также:
>>> for k, v in memo.items(): print k, id(v)
...
399680 435264
16790896 16790896
16790884 16790884
16790920 16790920
438608 435464
16790932 16790932
16790908 16790908
вы видите идентификатор (неизменяемых) целых чисел.
Так что вот граф:
>>> z = [x, x]
>>> t = copy.deepcopy(z, memo)
>>> print id(t[0]), id(t[1]), id(y)
435264 435264 435264
так что вы видите, что все подкопии - это те же самые объекты, что и y (с тех пор как мы повторно использовали памятку).
.Вы можете прочитать больше, посмотрев онлайн-документацию на Python:
http://docs.python.org/library/copy.html
Функция deepcopy()
является рекурсивной, и она будет работать вниз через глубоко вложенный объект. Она использует словарь для обнаружения увиденных ранее объектов, для обнаружения бесконечного цикла. Просто игнорируйте этот словарь.
class A(object):
def __init__(self, *args):
self.lst = args
class B(object):
def __init__(self):
self.x = self
def my_deepcopy(arg):
try:
obj = type(arg)() # get new, empty instance of type arg
for key in arg.__dict__:
obj.__dict__[key] = my_deepcopy(arg.__dict__[key])
return obj
except AttributeError:
return type(arg)(arg) # return new instance of a simple type such as str
a = A(1, 2, 3)
b = B()
b.x is b # evaluates to True
c = my_deepcopy(a) # works fine
c = my_deepcopy(b) # stack overflow, recurses forever
from copy import deepcopy
c = deepcopy(b) # this works because of the second, hidden, dict argument
Просто игнорируйте второй, скрытый, аргумент dict. Не пытайтесь его использовать.