繁体   English   中英

什么是C ++重载的输入流运算符的可接受的python替代品?

[英]What is the accepted python alternative to C++ overloaded input stream operators?

在C ++中,您可以这样做以轻松地将数据读入类中:

istream& operator >> (istream& instream, SomeClass& someclass) {
    ...
}

在python中,我可以找到从控制台读取的唯一方法是“raw_input”函数,它不能很好地适应这种事情。 是否有一种pythonic方式来解决这个问题?

您基本上是在寻找反序列化。 Python有很多选项可供选择,具体取决于所使用的库。 默认是python 酸洗 您可以在这里查看许多其他选项。

不,没有广泛的Pythonic约定“从这个打开的输入文本文件中读取X类的下一个实例”。 我相信这适用于大多数语言,包括Java; C ++是那里的异常(许多C ++商店禁止operator>>在他们的本地风格指南中使用)。 另一个答案建议,序列化(往返于JSON或XML,如果你需要人类可读的文本文件)是一种可能的方法,但不是太热(没有标准化的方法将完整的通用类实例序列化为XML或JSON)。

您可以从sys.stdin(类似文件的对象)中读取而不是使用raw_input:

import sys
input_line = sys.stdin.readline()
# do something with input_line

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM