2

私はこのコードを持っています:

class X(object):
    x = 10
    def test_x(self):
        return self.x

class Y(X):
    def test_y(self):
        return self.x

y = Y()
y.test_y()      # works fine

しかし、 type を使用して X に基づいて新しいオブジェクト z を作成すると、次のようになります。

z = type('Z', (X,), dict(z=1))
z.x             # works fine
z.test_x()      # gives a TypeError : 

バインドされていないメソッド test_x() は、Z インスタンスを最初の引数として呼び出す必要があります (代わりに何も取得しません)。どうすれば解決できますか。

アップデート

Martijn の助けと理解を得て、これが私が解決した方法です。

z = type('Z', (X,), dict(z=1))()
z.test_x() 
4

1 に答える 1

5

zインスタンスではなくクラスです。代わりにインスタンスを作成します。

z().test_x()

あなたがしたことは次のものと同等でした:

class Z(X):
    z = 1

z = Z
z.test_x()
于 2012-11-30T15:40:10.787 に答える