在python中进行目标编程,为什么我将属性初始化为“ none”?

时间:2018-10-26 04:52:39

标签: python-3.x class init

我是python的新手。我从网上找到了这段代码。注意,他在init方法中设置了index = None,domain = None。为什么需要将class属性声明为“ 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 :(得分:0)

您可以为默认参数使用任何所需的值,而不必为None。在这种情况下,通常使用None来提供默认行为,该默认行为与使用参数调用这些方法时稍有不同,因为您不应使用可变的默认值,例如空列表。

答案 1 :(得分:0)

他将这些变量设置为可选(或相同的具有默认值的参数)。这意味着如果您不为它们提供值(例如,使用a = gridPoint(),则init方法将自动为它们两个都考虑None

如果其中任何一个没有=None,您将被迫定义gridPoint并将该变量传递给类。

例如,您需要他们使用if index is None。设置默认值使您(在此特定代码中)可以避免未定义变量的错误。