【问题标题】:Python: How use constants for multiple clasess?Python:如何为多个类使用常量?
【发布时间】:2010-09-23 07:46:29
【问题描述】:

我想在 Python 中为 2 个类使用一个常量。 哪个是更好的方法?提前致谢!

MY_COLOR = "#000001" # <-------- Are correct here?
BLACK = "#000000"    # <-------- Are correct here?

class One:

    MY_FONT = "monospace"

    def __init__(self):
        if MY_COLOR == BLACK:
            print("It's black")

        if self.MY_FONT == "monospace":
            print("Font equal")


class Two:

    def __init__(self):
        if MY_COLOR == BLACK:
            print("It's black")

【问题讨论】:

  • 您不应该将“#111111”和“#000000”作为常量。
  • 你应该查找“常量”的定义。请描述您的用例是什么,因为在上面的代码中使用常量没有意义。
  • 我编辑了这个例子;)我询问了这个职位;)谢谢 pyfunc 和 AndiDog!

标签: python class constants


【解决方案1】:

“常数”的位置对我来说看起来不错。正如@pyfunc 评论的那样,您可能还想将其他颜色/字体值声明为“常量”。

如果您期待大量自定义颜色和/或字体,您可能需要考虑单独的模块或属性/配置文件。

[pedantic] Python 中没有您似乎暗示的“常数”。您正在模块级别设置一个变量,仅此而已。全部大写是用于指示不应更改值的约定。没有什么可以阻止它被改变。 [/迂腐]

【讨论】:

  • 谢谢 Manoj!我问是因为我认为“恒定”位置可能会更好(在 OOP 中),但我找不到更好的方法。
  • 等一下。有两个人投票给我,我只看到一个赞成票。我叫恶作剧=P =P
【解决方案2】:

这样的东西应该更好:

BLACK = "#000000"
GREY  = "#111111"
MONO  = "monospace"

class One:
    def __init__(self, color, font ):
        if color == GREY:
            print("Color not equal")

        if font == "MONO:
            print("Font equal")

【讨论】:

  • 好吧,我的问题不是关于硬代码(这只是一个例子):P 我问了关于 2 个或更多类的“常量”的更好位置 :) 谢谢 pyfunc!
猜你喜欢
  • 1970-01-01
  • 2017-04-06
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多