1

Pythonでは、クラスを作成し、そのクラスの2番目のバージョンを同一のデータで作成する方法はありますが、変更することはできますが、元のクラスのデータと同じに戻すことはできますか?

そのため、データとして 1 から 5 までの数字を含むクラスを作成し、セクションに同じ名前 (または非常に類似したもの) を持つ 2 つ目のクラスを作成します。2番目のクラスの数値をいじってから、1つの関数を使用してから、最初のクラスと同じになるようにリセットします。

私が見つけた唯一の代替手段は、非常に長いクラスを 1 つ作成し、その中に個別のデータが多すぎてすぐに使用できないようにすることです。

4

6 に答える 6

5

クラスはテンプレートであり、ブループリントを作成できます。クラスの複数のインスタンスをそれぞれ異なる番号で持つことができます。

class dog(object):
    def __init__(self, height, width, lenght):
        self.height = height
        self.width = width
        self.length = length

    def revert(self):
        self.height = 1
        self.width = 2
        self.length = 3

dog1 = dog(5, 6, 7)
dog2 = dog(2, 3, 4)

dog1.revert()
于 2008-09-15T15:54:52.107 に答える
2

これは、pobk のような別の回答です。インスタンスの dict を使用して変数を保存/リセットする作業を行いますが、コードでそれらの名前を指定する必要はありません。いつでも save() を呼び出してインスタンスの状態を保存し、reset() を呼び出してその状態にリセットできます。

class MyReset:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.save()

    def save(self):
        self.saved = self.__dict__.copy()

    def reset(self):
        self.__dict__ = self.saved.copy()

a = MyReset(20, 30)
a.x = 50
print a.x
a.reset()
print a.x

なぜこれをしたいのですか?それは最善/唯一の方法ではないかもしれません。

于 2008-09-17T13:09:44.030 に答える
1

クラスには値がありません。オブジェクトはそうです。基本的に、インスタンス (オブジェクト) を一連のデフォルト値にリセットできるクラスが必要ですか?

オブジェクトのプロパティをデフォルトにリセットするリセットメソッドを提供するだけではどうですか?

質問を単純化するか、本当にやりたいことを教えてください。それはまったく明らかではありません。

于 2008-09-15T15:59:11.270 に答える
1

あなたは混乱していると思います。「クラス」と「インスタンス」の意味を再確認する必要があります。

最初に特定のクラスのインスタンスを宣言し、次に他のクラスのインスタンスを宣言し、最初のデータを使用してから、2 番目のインスタンスでデータを変換して使用する方法を見つけようとしていると思います。最初のインスタンス...

演算子のオーバーロードを使用してデータを割り当てることをお勧めします。

于 2008-09-15T16:00:31.327 に答える
1
class ABC(self):
   numbers = [0,1,2,3]

class DEF(ABC):
   def __init__(self):
      self.new_numbers = super(ABC,self).numbers

   def setnums(self, numbers):
      self.new_numbers = numbers

   def getnums(self):
     return self.new_numbers

   def reset(self):
     __init__()
于 2008-09-15T16:01:20.890 に答える
1

参考までに、これが代替の実装です...おそらく約1500万のpythonicルールに違反していますが、情報/観察ごとに公開しています:

class Resettable(object):
    base_dict = {}
    def reset(self):
            self.__dict__ = self.__class__.base_dict

    def __init__(self):
            self.__dict__ = self.__class__.base_dict.copy()

class SomeClass(Resettable):
    base_dict = {
            'number_one': 1,
            'number_two': 2,
            'number_three': 3,
            'number_four': 4,
            'number_five': 5,
    }
    def __init__(self):
            Resettable.__init__(self)


p = SomeClass()
p.number_one = 100
print p.number_one
p.reset()
print p.number_one
于 2008-09-15T16:24:30.273 に答える