簡體   English   中英

如何在Python中為多個類和函數指定許多默認值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM