我是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'只是应用于'其他'?
答案 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)
该方法需要两个对象实例作为参数self
和other
。代码并不关心哪个类other
属于哪个类,只要它具有cont
属性,它也具有长度。但是除法方法通常需要两个相同类型的对象。
(当一个不同类型的对象与你的对象表现相同时,它被称为多态。这对于理解这一点并不重要,但是你'可能会遇到这个概念。)