我试图定义一个类,它的init函数需要一个默认参数。我定义了一个类,如下所示。
class Node:
def __init__(self,name,visited=False,distance=math.inf,path=Node('-')):
self.name = name
self.visited = visited
self.distance = distance
self.path = path
我得到以下错误:
NameError: name 'Node' is not defined.
我可以通过 "预先定义 "我所需要的类的部分来解决这个问题,比如这样。
class Node:
def __init__(self,name):
self.name = name
class Node:
def __init__(self,name,visited=False,distance=math.inf,path=Node('-')):
self.name = name
self.visited = visited
self.distance = distance
self.path = path
但我总觉得还有更好的,更pythonic的方法。
你应该这样做。
class Node:
def __init__(self,name,visited=False,distance=math.inf,path=None):
self.name = name
self.visited = visited
self.distance = distance
if path is None:
self.path = Node('-', path="default-path")
else:
self.path = path
这是你应该遵循的习惯用语,一开始就应该使用可变的默认参数。
然而,你需要默认参数有一个路径,否则它将不间断地递归。