从我的理解,传递给初始化的inbound_nodes = []只是声明了一个空列表。因此,即使我创建了Node的子类,并且在该子类中调用了此函数,但没有传递任何参数,__init__函数仍然可以工作,因为它自己声明了一个空列表。
我对不对?
接下来的问题是,我们可以看到self.inbound_nodes = inbound_nodes。
这是不是说,self.inbound_nodes也是一个空列表,但在Node超类内?如果是这样,为什么我不能以同样的方式声明self.outbound_nodes?
最后一个问题是,最后一个循环做了什么?
Python没有变量声明,您正在*使用列表文字语法初始化一个空列表,然后*将该列表设置为默认参数*。你不是*传递任何东西*,那是*函数定义*。请注意,这是常见错误的来源,如果您不了解python默认参数的工作方式,请参阅[这个着名的问题](https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable -default-argument) –
此外,'self.inbound_nodes = inbound_nodes'创建一个实例变量'self.inbound_nodes'并将它指定给与inbound_nodes相同的对象*。你应该只是阅读Python中的OOP教程。另外,请不要*发布代码图片!*。代码是文本。请将您的代码作为格式化文本*发布在问题本身*中。 –
inbound_nodes = []参数是一个默认值,这意味着如果调用者使用列表调用函数就可以,如果不是,它将通过一个空列表 –