-1
向元类添加一个方法在下面的例子中可以很好地工作。元类和方法
class Test(object):
def __init__(self, x):
self.x = x
def double(self):
return self.x*2
# method to add
def quadruple(self):
return self.x*4
# creating metaclass
TypeTest = type('TypeTest', (Test,), {'triple': triple,
'quadruple': quadruple})
# prints 8
TypeTest(2).quadruple()
下面的例子不起作用,我不知道为什么。它只是无法识别解析函数中的self并发生TypeError。
class Vehicle(object):
def __init__(self, wheels, door=False):
self.wheels = wheels
self.door = door
# method to add
def check_load(self, x):
if x > self.load:
return "Load won't fit"
else:
return "Load will fit"
# creating metaclass
Truck = type('Truck', (Vehicle,), dict(wheels=4,door=True, load=100,
check_load=check_load))
# TypeError: check_load() missing 1 required positional argument: 'x'
Truck.check_load(10)
您并未创建元类。你正在使用类型元类来生成一个普通类。 –
你究竟在努力实现什么? – jonrsharpe
“在下面的例子中,向元类添加一个方法完美。”这是不可能的,因为名称'triple'没有绑定任何东西,所以引用它会抛出一个'NameError'。 – jpmc26