试图理解代码中的这一行

时间:2018-05-30 17:32:38

标签: python class oop

我是Python的新手,刚进入面向对象。我认为我理解基本但这行代码确实让我感到困惑。

以下是整篇文章:

class SpecialString:
    def __init__(self, cont):
        self.cont = cont

    def __truediv__(self, other):
        line = "=" * len(other.cont)
        return "\n".join([self.cont, line, other.cont])

spam = SpecialString("spam")
hello = SpecialString("Hello world!")
print(spam / hello)

我在说这个:

line = "=" * len(other.cont)

我不知道'other.cont'是什么意思。对象如何成为另一个对象的属性?或者'cont'只是应用于'其他'?

2 个答案:

答案 0 :(得分:0)

truediv ()特殊方法仅与/运算符一起使用。

以下是我如何细分 truediv 。这基本上称为运算符重载。

def __truediv__(self, SpecialString("Hello world!")):
    #line = "=" * len(other.cont)
    line = "=" * len(SpecialString("Hello world!").cont)

    #return "\n".join([self.cont, line, other.cont])
    return "\n".join([SpecialString("spam").cont, line, SpecialString("Hello world!").cont])

其他这里是传递的第二个类实例。

SO中有一个问题详细解答了 truediv ()的运算符重载问题。您可以在此处查看:operator overloading for __truediv__ in python

答案 1 :(得分:0)

该方法需要两个对象实例作为参数selfother。代码并不关心哪个类other属于哪个类,只要它具有cont属性,它也具有长度。但是除法方法通常需要两个相同类型的对象。

(当一个不同类型的对象与你的对象表现相同时,它被称为多态。这对于理解这一点并不重要,但是你'可能会遇到这个概念。)