设置用户友好和显式标志值的大多数 Pythonic 方式?
Most Pythonic way of setting user-friendly and explicit flag values?
为阅读代码的人提供用户友好且不言而喻的标志值的最 Pythonic 方式是什么?
假设我得到了 class 的以下方法,这取决于输入将计算某个 multiplier
并为该 class 实例设置一个 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 语句检查它们时,reader 可以立即判断哪个标志值对应于哪个选项。
因此,与其拥有 self.cracking_mode = 2
,我更希望拥有 self.cracking_mode = "mixed_transverse_tension_shear"
。
但是,除了比较字符串比比较整数需要更长的时间之外,我认为这不是 Pythonic 的做事方式。
那么解决问题的最 Pythonic(和用户友好)的方法是什么?
这正是其他语言中enum
的目的。在我看来,最 "pythonic" 的做事方式就是最清晰的 - 所以字符串比较并不是那么糟糕。可能更好的做法是创建将值 (MIXED_TRANVERSE_TENSION_SHEAR = 2
) 表示为静态 class 成员的常量,然后与这些常量进行比较,这是更有效的整数比较。
为阅读代码的人提供用户友好且不言而喻的标志值的最 Pythonic 方式是什么?
假设我得到了 class 的以下方法,这取决于输入将计算某个 multiplier
并为该 class 实例设置一个 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 语句检查它们时,reader 可以立即判断哪个标志值对应于哪个选项。
因此,与其拥有 self.cracking_mode = 2
,我更希望拥有 self.cracking_mode = "mixed_transverse_tension_shear"
。
但是,除了比较字符串比比较整数需要更长的时间之外,我认为这不是 Pythonic 的做事方式。
那么解决问题的最 Pythonic(和用户友好)的方法是什么?
这正是其他语言中enum
的目的。在我看来,最 "pythonic" 的做事方式就是最清晰的 - 所以字符串比较并不是那么糟糕。可能更好的做法是创建将值 (MIXED_TRANVERSE_TENSION_SHEAR = 2
) 表示为静态 class 成员的常量,然后与这些常量进行比较,这是更有效的整数比较。