Python,魔法方法:无法理解任务
我正在学习Python,遇到一个任务,但我有点搞不懂 :)
“mississippi”这个词要怎么传给魔法方法呢?我看到只有整数列表被传给了Counter。
任务描述
你需要在Counter类中重载加法运算符。使用add()这个魔法方法来实现加法的重载。
举个例子,当你写a + b时,a这个对象应该有一个add()方法,它接受b作为第二个参数(self是第一个参数)。
在这个情况下,Counter对象接受一个整数列表作为参数。要进行总结的对象是一个字符串对象。结果应该是一个字符串列表,格式如下:1 test - 列表中的一个对象和字符串之间用空格分开。
默认代码:
from typing import List
class Counter:
def __init__(self, values: List[int]):
self.values = values
# TODO: add your code here
示例
>>> Counter([1, 2, 3]) + "mississippi"
["1 mississippi", "2 mississippi" , "3 mississippi"]
4 个回答
0
这是你的问题:
如何将“mississippi”传递给魔法方法?
问题描述是:
在
a + b
的情况下,a
对象应该有一个__add__()
方法,这个方法接受b
作为第二个参数(self
是第一个参数)
这告诉你,“mississippi”作为 b
参数传递给 __add__
方法。
0
重写 __add__ 方法时,应该返回自身。
class Counter:
def __init__(self, values: list[int]):
self._values = values
self._list = []
def __add__(self, txt: str):
self._list = [f"{v} {txt}" for v in self._values]
return self
def __str__(self) -> str:
return repr(self._list)
print(Counter([1,2,3]) + "mississippi")
输出:
['1 mississippi', '2 mississippi', '3 mississippi']
0
在使用 __add__
函数时,你会遵循一种设计,这种设计允许这个方法在操作时动态地接受第二个操作数。这种方法给你提供了更多的灵活性。
下面是一个标准的实现:
from typing import List
class Counter:
def __init__(self, values: List[int]):
self.values = values
def __add__(self, other: str) -> List[str]:
# Create a list of strings by combining each number from self.values with the string 'other'
return [f"{value} {other}" for value in self.values]
# Example usage:
if __name__ == "__main__":
counter = Counter([1, 2, 3])
result = counter + "mississippi"
print(result)
输出结果是: ["1 mississippi", "2 mississippi", "3 mississippi"]