2011-05-22 15 views
2

に他のクラスへのキャスト:私のコードでは、いくつかの場所で私はコード(簡体字)持っているPythonの

class A(object): 
    attrib1 = "a" 
    attrib2 = "b" 

class B(A): 
    flag = True 

を、私はAのインスタンスを持っていますが、私はクラスBのインスタンスを作成する必要があり、そのAのインスタンスからすべてのデータを持つことになります...私は自分自身が愚かに感じるが、私のような何かしたくない:

class B(A): 
    def __init__(self,a1,a2,a3,a4,..): 
     self.a1 = a1 
     self.a2 = a2 

をして呼び出すように:

obj_b = B(obj_a.a1, obj_a.a2,...) 

答えて

4
class B(A): 
    def __init__(self, obj): 
     self.__dict__.update(obj.__dict__) 
+3

のインスタンス注__class__変数を変更することです。 'obj'の型を確認し、関係する属性だけをコピーします。 –

+0

これは今のところ問題を解決し、問題が発生するとすぐに問題を解決しますが、警告に感謝します。 – Vestel

+0

'__dict__'は利用できないかもしれませんし、' property'を使うと壊れます...また、データの中にはクラス内で定義されているものもあるので、 'obj .__ dict__'の中にはありません – JBernardo

1

別のオプションは、これは一般的に悪い考えであることをA.

a = A() 
a.__class__ = B 
関連する問題