2011-06-14 82 views
20

這裏是如何,我聲明常量和使用它們在不同的Python類:在Python類中初始化和使用匯總的最好方法是什麼?

# project/constants.py 
GOOD = 1 
BAD = 2 
AWFUL = 3 

# project/question.py 
from constants import AWFUL, BAD, GOOD 

class Question: 
    def __init__(self): 
     ... 

是上面的一個很好的方式來存儲和使用含量的不同值?我意識到一段時間後,常量文件可能變得非常大,我可以明確地在任何給定的文件中導入10個以上的常量。

+0

那麼首先有在python中沒有常量變量,其次你的全局變量是在多個模塊中使用,還是隻在一個模塊中使用? – mouad 2011-06-14 15:15:27

+0

它們在該項目中的不同類中使用。 – 2011-06-14 15:19:17

回答

28

爲什麼不直接使用

import constants 

def use_my_constants(): 
    print constants.GOOD, constants.BAD, constants.AWFUL 

從Python禪:

命名空間是不錯的。讓我們做更多的!

編輯:除此之外,當你做報價,你應該包括一個參考,並檢查它,因爲其他人指出,應改爲:

命名空間一個鳴喇叭的偉大的想法 - - 讓我們做更多的!

這一次,我居然從源頭上抄了一遍:PEP 20 -- The Zen of Python

+5

它實際上是「命名空間是一個重要的想法」... – 2011-06-14 15:53:50

+1

...這也是一個無限多的apprompiate方式來放置它。 – delnan 2011-06-14 15:55:06

+0

@Daniel Roseman:哎喲。我立場糾正。我會相應地編輯我的帖子! – 2011-06-15 07:28:03

2

您有幾種選擇:

  1. 就做你正在做的,現在用常量的文件的方式
  2. 使用平面文件並解析它一次,通過字典/類
  3. 查詢到數據庫

從架空的角度來看,1和2大致相同。至於你提到導入特定常量的問題,它更容易使用下列約定之一:

  • import constants; some_func(constants.AWFUL)
  • from constants import *; some_func(AWFUL)
7

您也可以選擇,如果常量綁在特別是階級和階級使他們特定的那類中私下使用:

class Foo(object): 
    GOOD = 0 
    BAD = 1 
    WTF = -1 

    def __init__(self... 

和遠離你去。

相關問題