У меня есть объект класса, который создает некоторые поля данных:Как убедиться, что функция класса не будет вызвана до тех пор, пока не будет вызвана другая функция класса?
class DataFields(object):
_fields_ = ['field_1', 'field_2', 'data_length']
def __init__(self, data=None):
if data != None:
self.create_fields(data)
def create_fields(self, data):
i = 0
for field in self._fields_:
setattr(self, field, data[i])
i += 1
def get_datalength(self):
return self.data_length
Что является лучшим способом, чтобы убедиться, что функция get_datalength()
нельзя назвать, если data_length
поле не было создано (то есть, если не функция create_fields()
был вызван один раз).
Я думал об использовании либо переменную, которая инициализируется в create_fields
и проверяется в get_datalength()
или try-except
внутри функции get_datalength()
. Каков самый питонический (или лучший) способ?
Лучший способ, вероятно, 'create_fields' возвращает новый объект с соответствующими методами, которые вы хотите. Не пытайтесь делать все в одном классе. – roippi
Я думаю, что это именно то, что мне нужно сделать. Спасибо за совет! – plover
В приведенном выше .... есть ли причина, по которой вам нужно разрешить запуск create_fields после инициализации? если вы удалите данные по умолчанию, тогда всегда гарантируется, что он всегда запускается во время init. –