Python 中是否有一种智能方法来检查输入值是否与其中一个类变量匹配?

Is there a smart way in Python to check if a input value match one of the class variables?

提问人:link89 提问时间:7/10/2023 更新时间:7/10/2023 访问量:34

问:

这是一个幼稚的实现。

class DataFormat:
    CP2K_OUTPUT_DIR = 'cp2k/output_dir'
    VASP_OUTPUT_DIR = 'vasp/output_dir'
    LAMMPS_OUTPUT_DIR = 'lammps/output_dir'

    CP2K_OUTPUT = 'cp2k/output'
    VASP_OUTPUT = 'vasp/xml'
    EXTXYZ = 'extxyz'


    @classmethod
    def is_valid(cls, format: str):
        return format in [
            cls.CP2K_OUTPUT_DIR,
            cls.VASP_OUTPUT_DIR,
            cls.LAMMPS_OUTPUT_DIR,
            cls.CP2K_OUTPUT,
            cls.VASP_OUTPUT,
            cls.EXTXYZ,
        ]

有没有一种聪明的实现方式,以便在支持新的数据格式时不需要更新它?is_valid

蟒蛇

评论

0赞 Tim Roberts 7/10/2023
您始终可以创建一个 as 类变量。某处必须有一个清单。valid_list
0赞 link89 7/10/2023
这就是我现在正在做的事情。只是想知道是否有任何神奇的方法可以简化它?
1赞 Ausaf 7/10/2023
尝试return format in [ v for k,v in vars(cls).items() if not k.startswith('__')]

答: 暂无答案