Какой самый Pythoni c способ дать значения флагов, которые удобны для пользователя и очевидны для тех, кто читает код?
Предположим, я получил следующий метод для класса, который в зависимости от вход будет вычислять определенную 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"
.
Однако я не думаю, что это Pythoni c способ делать что-то, кроме Дело в том, что сравнение строк занимает больше времени, чем сравнение целых чисел.
Итак, каков будет самый Pythoni c (и удобный для пользователя) способ решения проблемы?