【问题标题】:Printing data from python program to terminal on mac在mac上将数据从python程序打印到终端
【发布时间】:2018-03-10 11:39:46
【问题描述】:

我正试图让我的代码将任何代码的结果输出到我的终端,但我似乎不知道为什么它不会打印。我只是在学习编码,所以我在这个网站上发现了很多令人困惑的解释,所以如果之前有人问过这个问题,我深表歉意。 这是我的python文件python.py:

class point(object):

    def __init__(self, x, y):

        self.x = float(x);
        self.y = float(y);

    def __str__(self):

        return("(" + self.x + "," + self.y + ")")


def main():

    first = point(2,3)


if __name__ == '__main__':
    main()

在终端中我只是输入“python python.py”

【问题讨论】:

  • 只是把使用打印。即打印 hi put print "hi"
  • mac中的终端

标签: python macos terminal output


【解决方案1】:

正如其他人所提到的,您需要在 main 函数中添加一个 print() 调用,以便将输出输出到终端。此外,需要注意的其他一些事项:Python 不需要分号,因此在您的 __init__() 方法中不需要它们,并且您不能将浮点数隐式转换为字符串,因此您必须在 __str__ 中明确() 方法。

class point(object):
    def __init__(self, x, y):
        self.x = float(x)
        self.y = float(y)

    def __str__(self):
        # explicitly cast floats to strings
        return "(" + str(self.x) + "," + str(self.y) + ")"

def main():
    first = point(2,3)
    print(first)

if __name__ == '__main__':
    main()

另外,正如 MrTrustworthy 指出的那样,您不需要直接调用 Class.__str__() ,因为 print 首先调用与类关联的 __str__() 方法。如果没有这样的方法并且隐式转换失败,那么您将获得调用函数的表示形式和内存中的地址。

如果您从示例中删除 __str__(),您应该得到如下输出:<__main__.point object at 0x7f184cec4b70> 如果您尝试打印该对象。

【讨论】:

    【解决方案2】:

    在 main() 函数中添加打印语句以打印到终端:

    class point(object):
    
    def __init__(self, x, y):
    
        self.x = float(x);
        self.y = float(y);
    
    def __str__(self):
    
        return("(" + self.x + "," + self.y + ")")
    
    
    def main():
    
        first = point(2,3)
        print(first)
    
    
    if __name__ == '__main__':
        main()
    

    【讨论】:

    • 为什么我不必打印“first.__str__”?这不是使用“str”的唯一方法吗?
    • first.__str__ 只是指向您为对象“point”定义的函数。此函数在调用时将返回一个描述您对象的字符串。如果您使用“print()”函数,python 将自动尝试生成要打印的对象的字符串表示形式,否则在大多数情况下输出将无法被人类阅读。因此,打印函数将在幕后调用 __str__() 函数本身。您也可以自己使用 print(first.__str__()),但您不必(并且不要忘记括号)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2022-11-02
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多