Как проверить параметр, а затем определить атрибут класса python

#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. Это хороший способ сделать это, но в целом я не знаю, повысилась ли эффективность алгоритма, но эффективность кодирования значительно повысилась.