Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!xlned.com!feeder3.xlned.com!newsfeed.xs4all.nl!newsfeed1a.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'parameters': 0.04; 'run- time': 0.05; 'subject:Python': 0.06; 'duplicate': 0.07; 'problem:': 0.07; 'processing.': 0.07; 'executable': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'python': 0.11; 'attributes.': 0.16; 'finney': 0.16; 'illusion': 0.16; 'parameters,': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'subject:class': 0.16; 'subject:parameters': 0.16; 'library': 0.18; 'module': 0.19; 'code,': 0.22; 'putting': 0.22; 'header:User-Agent:1': 0.23; 'config': 0.24; 'file.': 0.24; '(or': 0.24; 'values': 0.27; 'header:X-Complaints-To:1': 0.27; 'rest': 0.29; "i'm": 0.30; 'code': 0.31; 'getting': 0.31; 'bunch': 0.31; 'overhead': 0.31; 'writes:': 0.31; 'file': 0.32; 'url:python': 0.33; 'but': 0.35; 'subject:?': 0.36; 'url:org': 0.36; 'minimum': 0.38; 'ben': 0.38; 'url:library': 0.38; 'to:addr:python-list': 0.38; 'subject:" ': 0.39; 'to:addr:python.org': 0.39; 'received:org': 0.40; 'read': 0.60; 'then,': 0.60; 'url:3': 0.61; 'skip:n 10': 0.64; 'great': 0.65; 'skip:\xe2 10': 0.65; 'containing': 0.69; 'catherine': 0.84; 'examples.': 0.84; 'received:125': 0.84; 'url:configparser': 0.84; '8bit%:33': 0.91 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Ben Finney Subject: Re: initializing "parameters" class in Python only once? Date: Tue, 15 Jul 2014 10:04:05 +1000 References: <53C4589A.9040109@jpl.nasa.gov> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Gmane-NNTP-Posting-Host: jigong.madmonks.org X-Public-Key-ID: 0xAC128405 X-Public-Key-Fingerprint: 517C F14B B2F3 98B0 CB35 4855 B8B2 4C06 AC12 8405 X-Public-Key-URL: http://www.benfinney.id.au/contact/bfinney-pubkey.asc X-Post-From: Ben Finney User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux) Cancel-Lock: sha1:9d11nX/huNSJwdnS0aEKS+DziGw= X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 24 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1405382658 news.xs4all.nl 2966 [2001:888:2000:d::a6]:43626 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:74448 Catherine M Moroney writes: > The problem: I'm writing a large Python program and I have a bunch of > parameters (whose values are static) that I want to make available to > the rest of the code with minimum overhead and duplicate processing. Better than putting these in executable code, then, is to put them in a configuration file read as *data*, not code, when your program starts. Look at the ‘configparser’ module from the Python standard library for a robust way to read run-time configuration parameters from a non-executable file. The result of reading the config file (or set of them, if your use case is complex enough) is an object containing the parameters, which can be interrogated as normal by getting its attributes. See the documentation for examples. -- \ “[T]he great menace to progress is not ignorance but the | `\ illusion of knowledge.” —Daniel J. Boorstin, historian, | _o__) 1914–2004 | Ben Finney