[英]How to specify many default values for several classes, functions in Python?
這不是我的代碼,但是我有一個類似的問題:
https://gist.github.com/songrotek/0c64d10cab5298c63cd0fc004a94ba1f
我想在一個中央位置編輯和更改許多參數(以盡可能最語義的方式),然后使用它們構造類,運行主程序等。因為我不想將所有內容都放在一個文件中(太大,我需要模塊和不同的名稱空間)並聲明全局變量。 必須編輯用於設置某些參數的代碼似乎不是一個好的解決方案。
class Example:
def __init__(self, *initial_data, **kwargs):
for dictionary in initial_data:
for key in dictionary:
setattr(self, key, dictionary[key])
for key in kwargs:
setattr(self, key, kwargs[key])
使用這樣的構造函數能夠使用字典進行初始化似乎不夠透明。
有什么可能的解決方案? 它仍然是我最常用的代碼,相當小,因此應該在輕便/適合大小的同時又易於使用和舒適之間做出很好的折衷。
一種常見的處理方法是ConfigParser
讀取的配置文件。
這是一個例子:
# configuration.ini
[Example1]
constant1: 1
constant2: 2
[Example2]
c1: 'one'
c2: 'two'
# test.py
from ConfigParser import ConfigParser
conf = ConfigParser()
conf.read('configuration.ini')
def configure_instance(instance):
for i in conf.items(type(instance).__name__):
setattr(instance, i[0], i[1])
class Example1(object):
def __init__(self):
configure_instance(self)
class Example2(object):
def __init__(self):
configure_instance(self)
e1 = Example1()
e2 = Example2()
print vars(e1)
print vars(e2)
# {'constant1': '1', 'constant2': '2'}
# {'c2': "'two'", 'c1': "'one'"}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.