对于正在阅读代码的人来说,给出用户友好且不言自明的标志值的最Pythonic的方法是什么?
假设我得到了一个类的以下方法,它将根据输入计算某个multiplier并为该类实例设置一个cracking_mode标志:
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 (用户友好)方法是什么呢?
发布于 2020-03-06 12:57:32
这正是enum在其他语言中的目的。在我看来,做事情最“仿生”的方式就是最清晰的--所以字符串比较也没那么糟糕。也许更好的做法是创建将值(MIXED_TRANVERSE_TENSION_SHEAR = 2)表示为静态类成员的常量,然后与这些常量进行比较,这是一个更有效的整数比较。
https://stackoverflow.com/questions/60564335
复制相似问题