在 Python 中实现 __concat__

发布于 2024-08-23 20:04:58 字数 496 浏览 8 评论 0原文

我尝试实现__concat__,但它不起作用

>>> class lHolder():
...     def __init__(self,l):
...             self.l=l
...     def __concat__(self, l2):
...             return self.l+l2
...     def __iter__(self):
...             return self.l.__iter__()
... 
>>> lHolder([1])+[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'lHolder' and 'list'

我该如何解决这个问题?

I tried to implement __concat__, but it didn't work

>>> class lHolder():
...     def __init__(self,l):
...             self.l=l
...     def __concat__(self, l2):
...             return self.l+l2
...     def __iter__(self):
...             return self.l.__iter__()
... 
>>> lHolder([1])+[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'lHolder' and 'list'

How can I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我三岁 2024-08-30 20:04:58

__concat__ 不是特殊方法 (http:// docs.python.org/glossary.html#term-special-method)。它是操作员模块的一部分。

您需要实现 __add__ 来获得您想要的行为。

__concat__ is not a special method (http://docs.python.org/glossary.html#term-special-method). It is part of the operator module.

You will need to implement __add__ to get the behaviour you want.

阳光①夏 2024-08-30 20:04:58

您想要实现 __add__,而不是 __concat__。 Python 中没有 __concat__ 特殊方法。

You want to implement __add__, not __concat__. There's no __concat__ special method in Python.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文