我是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)
答案 0 :(得分:0)
您可以为默认参数使用任何所需的值,而不必为None
。在这种情况下,通常使用None
来提供默认行为,该默认行为与使用参数调用这些方法时稍有不同,因为您不应使用可变的默认值,例如空列表。
答案 1 :(得分:0)
他将这些变量设置为可选(或相同的具有默认值的参数)。这意味着如果您不为它们提供值(例如,使用a = gridPoint()
,则init方法将自动为它们两个都考虑None
。
如果其中任何一个没有=None
,您将被迫定义gridPoint并将该变量传递给类。
例如,您需要他们使用if index is None
。设置默认值使您(在此特定代码中)可以避免未定义变量的错误。