gpt4 book ai didi

Python __imul__() 方法

转载 作者:行者123 更新时间:2023-12-02 03:50:55 26 4
gpt4 key购买 nike

我创建了自己的数组类并实现了 imul() 方法,但是当我在实例上调用 *= 操作时,实例本身变成了 NoneType 对象。知道为什么会这样吗?

class CustomArray:
def __init__(self):
self.array = []

def append(self, value):
self.array.append(value)

def __mul__(self, scaler):
return [n*scaler for n in self.array]

def __imul__(self, scaler):
#print('*= operation is called.', [n*scaler for n in self.array])
self.array = [n*scaler for n in self.array]

def __repr__(self):
return self.array.__str__()

customArray = CustomArray()
print(customArray.array)
#output:[]
customArray.append(5)
customArray.append(15)
customArray.append(25)
customArray.append(35)
customArray.append(45)
print(customArray)
#output:[5, 15, 25, 35, 45]
print(customArray*5)
#output:[25, 75, 125, 175, 225]
customArray *= 5
print(customArray)
#output:None

最佳答案

仅仅因为您打印了有效结果,并不意味着该方法将如何返回数据。

它确实修改了数据,但由于没有返回值,所以实际值将为 None。

您可以返回 self,它会起作用

def __imul__(self, scaler):
#print('*= operation is called.', [n*scaler for n in self.array])
self.array = [n*scaler for n in self.array]
return self

关于Python __imul__() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45498566/

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