2008-09-15 10 views
1

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

私はその中のデータとして1から5までの数字を持つクラスを作ってから、セクションの名前が同じ(または非常に似ている)2番目のクラスを作ります。 2番目のクラスの数値を1つの関数で回り込み、最初のクラスと同じになるようにリセットします。

私が見つけた唯一の選択肢は、すぐに使用できるように、あまりにも多くの別個のデータを持つ悪質な長いクラスを作ることです。

+0

あなたの答えをありがとう、ティフィオンは私がMSNで探していた答えを与えました。私の質問は明確ではありませんでした。 基本的には、 「基本的に、インスタンス(オブジェクト)をデフォルト値のセットにリセットできるクラスは何ですか?」 はいでした。 – leachrode

答えて

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() 
1

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

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

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

+3

Voted:Pythonでは、クラスには属性(値)があります。インスタンスにも属性(値)があります。別の言語からPythonに移行するときを理解することは、非常に重要な違いです。 – gahooa

1

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

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

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

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__() 
1

ちょうどFYI、ここでは別の実装は...だおそらく1500万ニシキヘビの規則に違反し、私は情報/観測ごとに、それを公開:

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 
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 

どうしますか?それは最高の/唯一の方法ではないかもしれません。