python构造函数中的参数不匹配[重复]
Posted
技术标签:
【中文标题】python构造函数中的参数不匹配[重复]【英文标题】:Argument mismatch in python constructor [duplicate] 【发布时间】:2018-11-13 09:09:26 【问题描述】:我写了一个 python 类,它的构造函数接受两个列表作为参数。
class nn:
def __init__(layer_dimensions=[],activations=[]):
self.parameters =
self.cache = []
self.activations= []
initialize_parameters(layer_dimensions)
initialize_activations(activations)
net = nn(list([2,15,2]),list(['relu','sigmoid']))
尝试在构造函数中将两个列表作为参数传递时,出现以下错误:
TypeError: __init__() takes from 0 to 2 positional arguments but 3 were given
错误表明已经传递了 3 个参数,但很明显我只传递了 2 个。
【问题讨论】:
你缺少self
作为第一个参数
【参考方案1】:
你错过了 self 因为调用类方法的实例被自动传递了。
class nn:
def __init__(self, layer_dimensions=[],activations=[]):
self.parameters =
self.cache = []
self.activations= []
initialize_parameters(layer_dimensions)
initialize_activations(activations)
net = nn(list([2,15,2]),list(['relu','sigmoid']))
【讨论】:
【参考方案2】:我相信你在构造函数中缺少一个自我
class nn:
def __init__(self, layer_dimensions=[],activations=[]):
self.parameters =
self.cache = []
self.activations= []
initialize_parameters(layer_dimensions)
initialize_activations(activations)
net = nn(list([2,15,2]),list(['relu','sigmoid']))
【讨论】:
【参考方案3】:另外,默认参数是可变的也不是一个好习惯。你可以阅读更多关于它的信息here。
【讨论】:
以上是关于python构造函数中的参数不匹配[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将参数传递给正则表达式构造函数,并在 String.matchAll 方法中使用 [重复]