2016-09-19 16 views
0

私は、オブジェクトのリストのためにdeepcopyをやっているが、私は次のエラー得続ける:問題は、私は単一をコピーするときにもあるように思わTypeError:__deepcopy __()は1つの位置引数をとりますが、2がエラーを返しましたか?

TypeError         Traceback (most recent call last) 
<ipython-input-4-66b9ee5521c7> in <module>() 
     2 
     3 import copy 
----> 4 regions_copy = copy.deepcopy(regions) 
     5 regions[0].A = 15 
     6 print(regions[0].A) 

/home/michal/Bin/anaconda/envs/tensorflow/lib/python3.5/copy.py in deepcopy(x, memo, _nil) 
    153  copier = _deepcopy_dispatch.get(cls) 
    154  if copier: 
--> 155   y = copier(x, memo) 
    156  else: 
    157   try: 

/home/michal/Bin/anaconda/envs/tensorflow/lib/python3.5/copy.py in _deepcopy_list(x, memo) 
    216  memo[id(x)] = y 
    217  for a in x: 
--> 218   y.append(deepcopy(a, memo)) 
    219  return y 
    220 d[list] = _deepcopy_list 

/home/michal/Bin/anaconda/envs/tensorflow/lib/python3.5/copy.py in deepcopy(x, memo, _nil) 
    180        raise Error(
    181         "un(deep)copyable object of type %s" % cls) 
--> 182     y = _reconstruct(x, rv, 1, memo) 
    183 
    184  # If is its own copy, don't memoize. 

/home/michal/Bin/anaconda/envs/tensorflow/lib/python3.5/copy.py in _reconstruct(x, info, deep, memo) 
    295  if state is not None: 
    296   if deep: 
--> 297    state = deepcopy(state, memo) 
    298   if hasattr(y, '__setstate__'): 
    299    y.__setstate__(state) 

/home/michal/Bin/anaconda/envs/tensorflow/lib/python3.5/copy.py in deepcopy(x, memo, _nil) 
    153  copier = _deepcopy_dispatch.get(cls) 
    154  if copier: 
--> 155   y = copier(x, memo) 
    156  else: 
    157   try: 

/home/michal/Bin/anaconda/envs/tensorflow/lib/python3.5/copy.py in _deepcopy_dict(x, memo) 
    241  memo[id(x)] = y 
    242  for key, value in x.items(): 
--> 243   y[deepcopy(key, memo)] = deepcopy(value, memo) 
    244  return y 
    245 d[dict] = _deepcopy_dict 

/home/michal/Bin/anaconda/envs/tensorflow/lib/python3.5/copy.py in deepcopy(x, memo, _nil) 
    164    copier = getattr(x, "__deepcopy__", None) 
    165    if copier: 
--> 166     y = copier(memo) 
    167    else: 
    168     reductor = dispatch_table.get(cls) 

TypeError: __deepcopy__() takes 1 positional argument but 2 were given 

deepcopy __deepcopy__() takes 1 positional argument but 2 were given 

とトレースバックを次のようにオブジェクト。どんな考えが原因である可能性がありますか?

[object(), object(), object()]のようなリストをディープコピーすると問題はないので、私のクラスの実装にあると思います。それは非常に奇妙なことですが...

+0

[this](http://stackoverflow.com/questions/23944657/typeerror-method-takes-1-positional-argument-but-2-were-given)の複製可能性があります – nbryans

+0

地域のタイプとはアイテム? –

+1

'class A:pass'のような単純なオブジェクトをコピーしてみてください。うまくいけば、問題はあなたの 'regions'の定義の中にあります。この場合は、問題のコードを単純な、実例ではないものとして掲示する必要があります。 – MaxPowers

答えて

0

私は問題が実際に変数regionsの定義にあったことがわかりました。これは、クラス__dict__への割り当てを含まれているクラスAreaRegionのリストです:

from matplotlib.path import Path 

... 

class AreaRegion: 

    def __init__(self): 
     ... 
     self.path = Path(verts, codes, closed=True) 
     ... 

    ... 

どうやらそれは、これを好きではなかったので、私が代わりにゲッターへのパスを移動しました。

関連する問題