【发布时间】:2017-09-25 14:39:55
【问题描述】:
我一直在通过搜索教程来学习 Python 2。我正在发现关于 class 的事情。我在__add__ dunder-method 遇到了一些麻烦。我不知道如何添加 2 个类的对象。
为了更清楚:
class Add_obj:
def __init__(self, *num):
self.num = num
def __repr__(self):
return 'Add_obj{}'.format(self.num)
def __add__(self, other):
for i in zip(*(self.num + other.num)):
# and then some codes over here
#when:
obj1 = Add_obj(2, 5)
obj2 = Add_obj(4, 7)
# it should return Add_obj(6, 12)
我知道添加 2 个对象不是最好的方法?
【问题讨论】:
-
你应该在还在学习的时候切换到 Python 3.6 - 这是对 v2.x 的改进 - pythonclock.org
-
什么是
self.num?一个序列还是一个数字?也许将文档字符串添加到__init__或类本身。首先:也许只需在 for 循环中打印i以查看您拥有的内容 - 然后尝试弄清楚如何处理它。 -
您的尝试和两个答案都需要注意的一点:当两个对象的
num长度不同时,使用zip将截断更长的num。因此,添加不同大小的对象会起作用,但这不太可能是预期的行为。您可能想要添加一个明确的完整性检查,以确保两个对象具有相同的长度,或者使用根据需要填充 0 的解决方案来填充较短的对象。 -
第二个在 Python 3 上学习的建议。如果你有一个非常具体的原因,学习遗留的 Python 才是你应该做的事情。与 2.7 相比,3.6 中的出色功能列表非常长 - 无论如何您都会更喜欢使用它。
标签: python class python-2.x