使用内置类型来创建动态对象时的未绑定方法

vos*_*usa 2 python python-2.7

我有这个代码:

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
Run Code Online (Sandbox Code Playgroud)

但是当我使用类型构造基于X的新对象z时:

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

必须使用Z实例作为第一个参数调用未绑定方法test_x()(没有任何内容).我该怎么解决呢

UPDATE

在Martijn的帮助和理解下,我就是这样解决的:

z = type('Z', (X,), dict(z=1))()
z.test_x() 
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

z是一个类,而不是一个实例.改为创建一个实例:

z().test_x()
Run Code Online (Sandbox Code Playgroud)

你做的是相当于:

class Z(X):
    z = 1

z = Z
z.test_x()
Run Code Online (Sandbox Code Playgroud)