Объективное программирование на python, почему я инициализирую атрибут «none»?

Я новичок в питоне. Я нашел этот блок кода в сети. Обратите внимание, что он установил index = None, domain = None в методе инициализации. Почему мне нужно объявить атрибут класса как «Нет»?

class gridPoint: 
  def __init__(self, index=None, domain=None):
    self.hv = [] # hierarchical value
    self.fv = [] # function value
    if index is None:
      self.pos = [] # position of grid point
    else:
      self.pos = self.pointPosition(index, domain)

  def pointPosition(self, index, domain=None):
    coord = list()
    if domain is None:
      for i in range(len(index)/2):
        coord.append(index[2*i+1]/2.**index[2*i])
    else:
      for i in range(len(index)/2):
        coord.append((domain[i][1] - domain[i][0]) \
                    *index[2*i+1] / 2.**index[2*i] + domain[i][0])
    return coord

  def printPoint(self):
    if self.pos is []:
      pass
    else:
      out = ""
      for i in range(len(self.pos)):
        out += str(self.pos[i]) + "\t"
      print (out)
0
0
39
2

Ответы 2

Вы можете использовать любые значения для параметра по умолчанию, это не обязательно должно быть None. None обычно используется в этом случае для обеспечения поведения по умолчанию, которое немного отличается от того, когда эти методы вызываются с аргументами, потому что вы не должны использовать изменяемые значения по умолчанию, такие как пустые списки.

Он устанавливает эти переменные как необязательные (или такие же параметры со значениями по умолчанию). Это означает, что если вы не укажете для них значение (например, при использовании a = gridPoint(), метод init автоматически рассмотрит None для них обоих.

Если у кого-то из них не было =None, вы будете вынуждены определить gridPoint и передать эту переменную классу.

Они вам понадобятся, например, для использования if index is None. Установка значений по умолчанию позволяет (в этом конкретном коде) избежать ошибки неопределенной переменной.

Другие вопросы по теме