#python #oop #attributes #queue #init
Вопрос:
У меня есть очередь классов, как показано ниже, В этом классе, если у меня не будет пропускной способности, она будет меньше, и наоборот, я не знаю, есть ли более эффективный способ
class Queue(): def __init__(self, capacity=None): self._queue = list() if(capacity ==None): self.isLimit = False else: self.isLimit=True self.capacity = capacity
Комментарии:
1. Эффективен в каком смысле ? Этот код хорош, хотя и немного однотипен. Как правило, вы хотите
if capacity is None: ...
и, возможно, вамself.capacity
также следует установитьif
блок (может быть, чтобыNone
?), Но все это не имеет ничего общего с эффективностью , скорее, с дизайном2. Атрибут islimit является избыточным. Если емкость равна нулю, islimit == False, если емкость не равна нулю, islimit является истинным. Просто проверьте, нет ли емкости!
Ответ №1:
Вместо использования переменной isLimit
вы можете использовать только переменную capacity
и проверить , есть ли она None
или нет:
class Queue(): def __init__(self, capacity=None): self._queue = list() self._capacity = capacity def can_add_more(self): if self._capacity is None: # Doesn't have a limit return True return len(self._queue) lt; self._capacity
Комментарии:
1. Это хороший способ сделать это, но в целом я не знаю, повысилась ли эффективность алгоритма, но эффективность кодирования значительно повысилась.