私はこれに非常に似た質問をしていますが、正確にはそうではありません。pythonでコピーコンストラクタをうまく作る方法はありますか?
私のクラスのインスタンスであればコピーされる、私のクラスのコンストラクタのオプションの引数が必要です。例えば、何かのように(私が知っているこのコードは動作しません!):私はこれにはいくつかの実用的なソリューションがあります知っている
class Foo(object):
def __init__(self, foo=None):
self.x = None
self.y = None
self.z = None
if foo is not None and isinstance(foo, Foo):
self = copy.deepcopy(foo)
a = Foo()
a.x = 1
a.y = 2
a.z = 3
b = Foo(a)
print b.x
print b.y
print b.z
を。私はfooの対応する属性の値に応じてselfの各属性を設定できますが、クラスには多くの属性が多数含まれているため、これは本当に面倒です。または、私は単純にdoを使用することができます:
b = copy.deepcopy(a)
...しかし、私はむしろそれが可能な場合はしたいと思います。また、__new__
を上書きしないようにしたいと考えています。
実際にコピーコンストラクタを作成するには、Pythonでまともな方法はありませんか?
WHYありませんあなたはb = copy.deepcopy(a)を使いたいですか?私はそれがうまくいくならば、b = Foo(a)よりも書くのにそれ以上の行はありません.... – DGH
まあ、私はコピーコンストラクタが実行可能であると私の指がまだ交差していると思います。そして、率直に言って、どうしてそんなの?それは本当に珍しい要求ではないようです。すべてのオブジェクト指向言語にこの機能があると考えられます。 – carmenism
なぜそれは機能ではありませんか?それはちょうど統語的な砂糖なので、まったく同じことを言う別の方法です。 1つの非常に単純なコード行で深いコピーを作成する機能が存在する限り、それが「コンストラクタ」であるかどうかはなぜ重要ですか? – DGH