copy
メソッドをクラスに実装するベストプラクティスは何ですか?ここでコピー方法を実装するためのベストプラクティス
は私のクラスの例である:
class MyClass:
def __init__(self, foo, bar=None):
self.foo = foo
if bar is not None:
self.bar = bar
else:
self.bar = {'Hello': 'Ciao'}
私は、以下の方法を提案している5年前の記事を見つけました:
import copy
def copy(self):
return MyClass(copy.copy(self.foo), copy.copy(self.bar))
は、それはまだそれを行うための唯一の方法ですか他の可能性はありますか?
私のオブジェクトのコピーを作成して、関数が元のオブジェクトを変更しないようにする必要があります。この関数は次のようなものです:
def translate_and_print(my_class, dict={'Hello':'Ciao'}):
temp = my_class # here I want to use the copy method: temp = my_class.copy()
temp.foo = temp.bar[temp.foo]
print(temp.foo)
次のコードの出力は「チャオ」、「チャオ」であるが、私はcopy()
を使用する場合は、「チャオ」、「こんにちは」
mc = MyClass('Hello')
translate_and_print(mc)
print(mc.foo)
する必要がありますこの方法は、私がエラーを持っている:
AttributeError: 'MyClass' object has no attribute 'copy'
、私は '' MyObjectに= MyClassの( 'foo' を)実行し、問題なく 'copy.copy(MyObjectに)を'行うことができます。エラーを再現するコードを提供できますか? –
歴史上の理由から上記のコメントをそのまま残しておきます。あなたのエラーは 'my_class.copy()'を呼び出そうとしていますが、あなたは 'copy.copy(my_class)'を呼び出すべきです。 –
いいえ、これは私が使用したものと同じです。 ありがとう – paolof89