我是Python新手,正在学习输入/输出。现在,我试图从我从命令行输入中指定的文件中将对象添加到对象中。从命令行输入初始化Python对象
例如,我要运行以下命令:$ /...filepath.../ python3 myCode.py < 06
传递文件06
$ /...filepath.../ cat 06
7
4 5 2 7 88 2 1
的内容myCode.py
。 myCode.py
和06
都位于相同的目录中。
我试图创建从属性的命令行调用一个MyClass
对象如下:
## myCode.py ##
# create class
class MyClass(object):
def __init__(self):
self._num_one = int(sys.stdin.readline())
self._num_many = [int(x) for x in sys.stdin.readline().split()]
# print attributes
print(MyClass()._num_many)
print(MyClass()._num_one)
,但我发现了以下错误为self._num_one
,但我能TOR打印self._num_many
和我不知道为什么。如果我交换self._num_one
和self.num_many
的订单,那么我可以得到self._num_one
。由于06
只有两行,所以我最初没有读第一行吗?为什么我只能打印这两个属性中的一个,以及如何打印这两个属性?
非常感谢。
它通常被认为是糟糕的设计,在类初始化器中有复杂的操作,如IO。在这种情况下,每次你想创建一个新的对象都会从stdin中读取。这使得测试变得更加困难。最好使用“工厂函数”来读取标准输入,解析输入,然后用合适的类型实例化类。 – Keith