我有这个代码:
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)
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)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |