【发布时间】:2022-01-23 16:08:09
【问题描述】:
假设我有一个这样的 Python 类:
class Person:
def __init__(self):
self.alive = True
self.name = 'Alice'
self.age = 20
如何从这个类的外部文件中读取参数?我想它可能类似于以下伪代码:
class Person:
def __init__(self, filename):
self.alive = True # same for all persons
with open(filename, 'r') as f:
self.name = f.somehow_read_name # different for all persons
self.age = f.somehow_read_age
我可以做到:
alice = Person('alice.txt')
bob = Person('bob.txt')
我希望外部 'alice.txt' 文件是人类可读的,所以可能是这样的:
name = 'Alice' # Name of the person
age = 20 # Age of the person
### OR ###
{
name : 'Alice', # Name of the person
age : 20 # Age of the person
}
### OR ###
self.name = 'Alice'
self.age = 20
参数的顺序不很重要。 到目前为止,我一直在这样做:
with open(filename, "r") as f:
parameters = f.readlines()
self.name = parameters[8]
当 'alice.txt' 文件中的某些内容发生变化时,这显然是非常繁琐的维护。
【问题讨论】:
-
您可以使用 yaml 或 ini 作为人类可读的格式。或者自己滚动。否则你的方案是一个好的方案。也可以使用混淆(实际上是任何配置解析器)-confuse.readthedocs.io/en/latest/usage.html 出于完全不同的原因,我们不得不自己做这件事。
标签: python class file-io parameters