【问题标题】:python print class text passed to a variablepython打印类文本传递给变量
【发布时间】:2017-08-05 22:52:34
【问题描述】:

我想将传递给变量的函数文本写入文本文件:

myvariable = myClass(arg1, arg2, arg3, arg4, arg_n)

f = open("mytextfile.txt", "w")
f.write("here is my paremeters:"+ str(myvariable))
f.close()

在我的打印输出文本文件中,我得到:

"here is my parameters:<somefunction.myClass instance at 0x7d54a5101b48>"

所需的输出将是:

"here is my parameters: myClass(arg1, arg2, arg3, arg4, arg_n)"

我应该使用myvariable,因为参数会不时更改,所以我无法按原样对函数文本进行硬编码。

【问题讨论】:

  • 你是怎么得到的,而不是 run de 函数的结果?是你定义的函数吗?
  • @Tzomas 对不起,你说得对,它是一个类,而不是一个函数。无论如何,它不会影响我的问题...
  • 如果没有看到myClass 定义,很难提供帮助
  • 为myClass定义一个__str__或__repr__方法
  • 什么是myClass,它有什么函数或者构造函数什么的吗?

标签: python string printing


【解决方案1】:

由于您使用第三方库进行了评论,而这不是您自己的课程...

不漂亮,但它有效。

def string_it(c):
    return """myClass({}, {}, {}, {}, {})""".format(
        c.arg1, c.arg2, c.arg3, c.arg4, c.argN
    )

f.write("here are my parameters: {}\n".format(string_it(myvariable)))

或者您可以尝试在该变量上实现它。

(自己没试过,不过是函数重映射而已)

myvariable.__str__ = lambda s: """myClass({}, {}, {}, {}, {})""".format(
        myvariable.arg1, myvariable.arg2, myvariable.arg3, myvariable.arg4, myvariable.argN
    )

然后str(myvariable) 可能会起作用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2021-08-14
    • 1970-01-01
    • 2015-02-12
    • 2016-02-12
    • 2018-08-07
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多