2016-12-31 7 views
0

私はいくつかのコードをビルドしていますので、簡単に実験するためにPythonコンソールに置くのが便利です。クラスには州があり、クラスの既存のインスタンスを更新することが最善の方法であるかどうかはわかりません。Pythonコンソールのクラスインスタンスを更新してください

class Cheese: 
    def __init__(self): 
    self.brand = 'Kraft' 
    self.quantity = 4 

そして、私はインスタンスを作成します:

言ってやるが、例えば、私はこのクラスを持っている

class Cheese: 
    def __init__(self): 
    self.brand = 'Kraft' 
    self.quantity = 4 
    def munch(): 
    self.quantity = self.quantity-1 
    #Possibly many other new methods or changes to existing methods 
    #Possibly incrementally updating things many times 

c = Cheese() 

今、私はそうのようなクラスを変更しますcを更新して、以前の内部の状態を維持しながら更新されたクラスのインスタンスにすることができます状態?現時点では、多少高価なコードを再実行する必要があります。

答えて

1

私はあなたが2.xではなく3.xと「クラシッククラス」を使用していると仮定しています。もしそうなら、私はあなたが欲しいものを更新すると信じています。c.__class__

>>> class C(): 
    pass 

>>> c = C() 
>>> class C(): 
    def __init__(self): self.a = 3 

>>> c.__class__ 
<class '__main__.C'> # but actual reference is to old version 
>>> id(C) 
2539449946696 
>>> id(c.__class__) 
2539449972184 
>>> c.__class__ = C 
>>> id(c.__class__) 
2539449946696 
+0

これはあなたの質問にお答えしますか? –

関連する問題