Объективное программирование на python, почему я инициализирую атрибут "none"? - PullRequest
0 голосов
/ 26 октября 2018

Я новичок в питоне.Я нашел этот блок кода из Интернета.Обратите внимание, что он установил index = None, domain = None внутри метода init.Почему мне нужно объявить атрибут класса как "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)

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

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

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

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

0 голосов
/ 26 октября 2018

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

...