Я создал класс, который может быть создан из чтения текстового файла, из преобразования из другого текстового файла или из будущего GUI. Чтобы объяснить ситуацию, я использую простой пример точно такого же случая, но я не объясняю точно такую же ситуацию, чтобы не делать пост слишком длинным или выдавать слишком много информации (возможно, немного глупо, но в этом время, когда я связан NDA).
Чтобы создать экземпляр класса, передается строка с числами, а также целое число, целое число зависит от атрибута экземпляра другого класса, который тесно связан. Если из текстового файла читается '124'
, а другое значение (целое число) равно 12
, то, что должно быть показано в GUI, равно 136
(смещение integer
). Изначально я создал класс следующим образом:
class myClass(object):
def __init__ (self, number, offset):
self.number = number
self.offset = offset
self.displayValue = number + offset
В текстовом файле будет отображаться self.number
, а в GUI будет отображаться self.displayValue
, и это не будет проблемой. Однако, если этот экземпляр редактируется из GUI (конечно, с помощью метода установки), то будет редактироваться self.displayValue
, и number
придется изменить в зависимости от этого. Кроме того, при чтении из текстового файла другого типа будет создан экземпляр, но с аргументами, которые вместо этого будут displayValue
и offset
(в этих двух случаях offset
будет отрицательным, поскольку он уже учтен) из которого следует вычислить self.number
.
Я видел, что у меня могут быть операторы if в методе init . Однако в моем случае определения атрибутов будут меняться в зависимости от того, где создан экземпляр. Я могу использовать знак аргумента offset
, чтобы решить это, но я хотел бы знать, не противоречит ли это наилучшей практике. Кроме того, обратите внимание, что если self.displayValue
редактируется с помощью метода установки, следует также изменить self.number
, было бы лучше включить обновление для self.number
в установщик self.displayValue
? Каков наилучший способ сделать это?
PS: Может быть, есть другой способ сделать это с помощью графических интерфейсов, я все еще учусь создавать их.