Я программирую калькулятор для гражданского строительства. Он рассчитывает свойства здания на основе пользовательского ввода (например, высота здания) и свойств материала.
Я использую несколько подклассов для хранения свойств отдельных материалов. Вдобавок к ним есть класс с методами класса, которые используются для вычислений, которые используют свойства материала и пользовательский ввод.
ОДНАКО определенное свойство (назовем его устойчивым) вычисляется двумя различными способами, в зависимости от того, какой материал используется. Я хочу иметь функцию single для расчета устойчивости всех материалов.
Мой код выглядит следующим образом:
class Material:
hardness = None
density = None
@classmethod
def CalculateDurability(cls, userInput):
if cls == '__main__.Concrete_1':
output = cls.hardness * userInput
else:
output = cls.density * userInput
print(output)
class Concrete_1(Material):
hardness = 1
density = 2
class Concrete_2(Material):
hardness = 3
density = 4
input = 1
Concrete_1.CalculateDurability(input)
Concrete_2.CalculateDurability(input)
Вывод:
2
4
Но так и должно быть:
1
4
Отсюда ясно, что проблема:
if cls == '__main__.Concrete_1':
Это утверждение всегда ложно.
Так как можно Я правильно сделал это сравнение?