bash中的<Exercise_2.Line对象位于0x7ff1ddbfeba8>是什么意思? linux

时间:2019-12-23 12:19:04

标签: python-3.x linux bash oop

我编写了一个代码,该代码应该返回经过两点的直线的方程式,并且可以正常工作,但在bash中,它也会出现这条直线,我不知道这意味着什么。该代码另存为Exercise_2.py,其中有两个类(点和线)。

这是我的代码:

班级积分:

def __init__(self,x,y,):

    self.x=x
    self.y=y

课程行:

def __init__(self,m,q,):

    self.m=m
    self.q=q

    print(f"y={m}x+{q}")

这是我运行代码后看到的:

y = 3x + 2

感谢任何人向我解释它,并感谢您的宝贵时间。

P.S。也许我正在发现问题。我应该使用 repr 方法,但是我试图找出原因

1 个答案:

答案 0 :(得分:0)

将类传递给打印函数时,它将打印该对象的表示形式。您可以通过在类中添加__repr__方法并返回一个字符串来修改打印时显示的内容。

class Line:
    def __init__(self,m,q):

        self.m=m
        self.q=q

        print(f"y={m}x+{q}")

    def __repr__(self):
        return f"y={self.m}x+{self.q}"

print(Line(3,2))

但是,由于它也在init方法中运行,因此它将打印两次输出,因此可以将其删除。

正如我在上面的评论中所述,当您从类创建对象时,如果存在,它将运行您的 init 方法。由于您的 init 方法包含一个打印函数,因此可以打印该函数,但是由于您还打印了对象本身,因此它试图打印该对象的某种表示形式。由于未定义任何内容,因此它会打印python对象的默认表示形式。

如果您需要更多详细信息。我可以尝试并更好地解释。