Python中C++重载输入流操作符的替代方案是什么?

3 投票
3 回答
1287 浏览
提问于 2025-04-15 14:32

在C++中,你可以这样做,轻松地把数据读入一个类:

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

在Python中,我找到的唯一从控制台读取数据的方法是“raw_input”函数,但这个方法对这种情况不是很灵活。有没有更符合Python风格的方法来处理这个问题?

3 个回答

2

与其使用raw_input,你可以直接从sys.stdin读取数据(它就像一个文件对象)。

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

你其实是在寻找反序列化的方式。Python有很多种选择,具体取决于你使用的库。默认的方式是使用Python的pickle模块。除此之外,还有很多其他的选项,你可以在这里看看。

3

不,实际上并没有一个普遍适用的Python约定来“从这个打开的文本文件中读取下一个X类的实例”。我觉得这在大多数编程语言中都是如此,比如Java;而C++有点不同(而且很多C++的公司在他们的本地风格指南中禁止使用operator>>)。另一种答案提到的序列化(如果你需要看起来像人类可读的文本文件,可以用JSON或XML)是一种可能的方法,但效果并不好(没有标准化的方法可以将完全通用的类实例序列化为XML或JSON)。

撰写回答