Python集合长度计算异常:代码返回绑定方法而非集合长度求助
解决:调用类方法时返回绑定方法而非集合长度
嘿,问题很简单——你现在只是在引用方法本身,而没有实际调用它!
看你代码里的print(a.size):这里的a.size是指向PowerSet类中size方法的绑定方法对象,而不是调用这个方法得到的返回值。在Python中,要执行方法并获取它的返回结果,必须在方法名后面加上括号()。
修正后的代码
把打印语句改成print(a.size())就能得到你想要的集合长度了,顺便帮你调整了put方法里没必要的return(因为set的add方法本身没有返回值):
class PowerSet(): def __init__(self): self.powerset = set() def size(self): return len(self.powerset) def put(self, value): if value in self.powerset: raise KeyError else: self.powerset.add(value) # add方法无返回值,无需return a = PowerSet() for i in range(10): a.put(i) print(a.size()) # 现在会输出:10
补充说明
当你直接打印a.size时,Python会输出这个方法对象的内存信息,也就是你看到的<bound method...>。而加上括号()后,Python才会执行这个方法里的逻辑,返回len(self.powerset)的结果。
内容的提问来源于stack exchange,提问作者vladionair
相关产品推荐
相关产品推荐

