gpt4 book ai didi

python-3.x - 为什么这个 python 作业没有按预期工作?

转载 作者:行者123 更新时间:2023-12-04 01:52:17 25 4
gpt4 key购买 nike

这将返回您所期望的内容:

class My(object):
def __len__(self):
return 6

a = My()
print(len(a))

但这会引发错误:

class My2(object):
pass

b = My2()
b.__len__ = lambda x: 6
print(len(b))

类型错误:“My2”类型的对象没有 len()

为什么?

最佳答案

这是因为您试图在实例上而不是在底层类上定义方法。例如,这可以工作:

class My2(object):
pass

b = My2()
b.__class__.__len__ = lambda x: 6
print(len(b)) # Prints 6

进一步澄清评论,这不是 lambda 或函数的问题,这证明它不起作用:

class My2(object):
pass


def l(x):
return 6

b = My2()
b.__len__ = l
print(len(b)) # TypeError: object of type 'My2' has no len()

关于python-3.x - 为什么这个 python 作业没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47915937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com