首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置用户友好和显式标志值的大多数Pythonic方法?

设置用户友好和显式标志值的大多数Pythonic方法?
EN

Stack Overflow用户
提问于 2020-03-06 12:43:17
回答 1查看 37关注 0票数 0

对于正在阅读代码的人来说,给出用户友好且不言自明的标志值的最Pythonic的方法是什么?

假设我得到了一个类的以下方法,它将根据输入计算某个multiplier并为该类实例设置一个cracking_mode标志:

代码语言:javascript
复制
def evaluate_first_matrix_crack(self, base_sigma22, base_tau12):
    # Mixed transverse tension-shear
    if base_sigma22 > 0 and base_tau12 != 0:
       self.cracking_mode = 2
       multiplier = sqrt(1. / ((base_sigma22 / self.Yt_is) ** 2 + (base_tau12 / self.S_is) ** 2))

    # Pure transverse tension
    elif base_sigma22 > 0 and base_tau12 == 0:
        self.cracking_mode = 0
        multiplier = self.Yt_is / base_sigma22

    # Pure shear
    elif base_sigma22 <= 0 and base_tau12 != 0:
       self.cracking_mode = 1
        multiplier = self.Yt_is / base_sigma22

    return multiplier

"cracking_mode“标志将影响在代码的其他部分中调用哪些方法。我希望标志值尽可能友好,以便在代码的其他部分中检查if语句时,读者可以立即判断哪个标志值对应于哪个选项。

因此,与其拥有self.cracking_mode = 2 self.cracking_mode = "mixed_transverse_tension_shear"**.** ,我更希望有

然而,,我不认为这是一种毕达通的方法,除了比较字符串比比较整数花费更长的时间之外。

那么,最能解决这个问题的Pythonic (用户友好)方法是什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-06 12:57:32

这正是enum在其他语言中的目的。在我看来,做事情最“仿生”的方式就是最清晰的--所以字符串比较也没那么糟糕。也许更好的做法是创建将值(MIXED_TRANVERSE_TENSION_SHEAR = 2)表示为静态类成员的常量,然后与这些常量进行比较,这是一个更有效的整数比较。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60564335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档