gpt4 book ai didi

python - 在 python 中定义一组(可能是分层的)常量的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:37 24 4
gpt4 key购买 nike

假设我必须定义一组常量,例如

IMAGE_FOLDER="..."
MASKS_FOLDER="..."
OBJECTS_FOLDER="..."

IMAGE_FMT="...",
MASK_FMT="...",
OBJECT_FMT="...",

FORMATS=(IMAGE_FMT, MASK_FMT, OBJECT_FMT)

...

(常见的用例是将一些字符串常量保存在变量中,以免多次键入“image”而出现拼写错误)

定义它的最佳方法是什么(如果我有很多)。我可以看到多种解决方案,例如 types.SimpleNamespace 或创建自定义类。但是,如果我希望递归地分配这些常量,例如,该怎么办? constants.folder.image 而不是 constants.image_folder

是否有比自定义类更好的通用做法或解决方案?

UPD:自定义类解决方案如下所示

class Constants:
class Formats:
OBJECT = "objects_format"
MASK = "masks_format"

class Folders:
IMAGE = "images_folder"
OBJECTS = "objects_folder"
MASKS = "masks_folder"

class Extensions:
IMAGE = {".bmp", ".png", ".jpeg", ".jpg", ".tif", ".tiff"}
OBJECTS = {".xml"}
MASKS = {".bmp", ".png", ".jpeg", ".jpg", ".tif", ".tiff"}

class DatasetColumns:
ID = "ID"
IMAGE = "image"
OBJECTS = "object"
MASK = "mask"

所以“递归属性”意味着我可以通过像Constants.DatasetColumns.ID这样的点递归访问

这个自定义类解决方案的问题是这些属性并不是真正的常量。也许我并不真正需要它们......但是如果您知道如何使用大约相同数量的定义代码直接访问它们(没有 Enum 的 .value()),那么它可能是理想的解决方案

最佳答案

看起来您可能会伸手去拿 enumeration :

from enum import Enum

class Formats(Enum):
IMAGE = "..."
MASK = "..."
OBJECT = "..."

class Folders(Enum):
IMAGE = "..."
MASKS = "..."
OBJECTS = "..."

关于python - 在 python 中定义一组(可能是分层的)常量的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59091560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com