gpt4 book ai didi

python - 我怎样才能覆盖魔术方法?

转载 作者:行者123 更新时间:2023-11-28 21:20:51 25 4
gpt4 key购买 nike

今天,我在看一本关于python的书,我知道有一些神奇的方法,比如__add____mul__

但是,在书中,并没有说明如何使用它们。

所以,我试着自己弄明白。但是,我不知道如何覆盖魔术方法。这是我试过的代码。

>>> class Num(int):
... def __init__(self, number):
... self.number = number
... def __add__(self, other):
... self.number += other*100
... return self.number
...
>>> num = Num(10)
>>> num.number + 10
20

谁能帮我理解这些魔术方法是如何工作的?

最佳答案

In [12]: class Num(int):
...: def __init__(self, number):
...: self.number = number
...: def __add__(self, other):
...: #self.number += other*100 #why do you want to do other*100?
...: return Num(self.number+
...: Num(other).number) #wrap "other" with "Num"
#in case "other" is an "int"

In [13]: num = Num(10)
...: print num+10
20

实际上,如果您的 Numint 的子类,则无需重写 __add__。只需在 __init__ 中调用 super 就足够了:

In [19]: class Num(int):
...: def __init__(self, *args):
...: super(Num, self).__init__(args)

In [20]: Num(10)
Out[20]: 10

In [21]: Num(10)+10
Out[21]: 20

这样就不需要像 self.number 这样的其他属性了。

关于python - 我怎样才能覆盖魔术方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22193282/

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