Я пытаюсь сделать простой код или оболочку Python, который позволит мне использовать его в качестве калькулятора ... для анализа схемы. В идеале я бы использовал обычный калькулятор Python для вычисления эквивалентных сопротивлений на основе обозначений: R1 + R2 означает два резистора последовательно, тогда как R1 // R2 означает два резистора параллельно. Будем надеяться, что это означает, что я могу использовать Python как обычно, такие как:Переопределение оператора деления пола
>>> 1 + 1
2
>>> R1 = 1
>>> R2 = 2
>>> R1 + R2
3
Так сопротивления серии будет достаточно просто (дух). Однако, когда дело доходит до резисторов параллельно, я хотел бы использовать пол-деления в качестве оператора, который позволил бы для обычных арифметических комбинаций:
>>> 2 // 2
1
>>> (R2 // 2) + R1
2
Где // деление определяется как:
def __floordiv__(self, other):
return 1/(1/self.value + 1/other)
После выполнения некоторых исследований я понимаю, что встроенные классы, такие как целые и двойные, нельзя переопределить. Тем не менее, я действительно не хочу подкласса, потому что это потеряет легкость просто набирать значение сопротивления как примитивный тип. Есть ли другой способ, которым я мог бы это сделать? Я хотел бы, чтобы это было временным эффектом, который существует только в небольшой области и может быть выполнен в начале файла оболочки. Благодаря!
Сопротивление не является примитивным типом, поэтому вы не сможете просто ввести его, если только вам не удастся выполнить «monkey-patch» int. Я думаю, что делать «R (1) + R (2)» и «R (1) | R (2) 'проще и понятнее. – Blender