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构造函数中的参数不匹配[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python--socketserve源码分析

如何将参数传递给正则表达式构造函数,并在 String.matchAll 方法中使用 [重复]

Dart:Dart 如何匹配类的构造函数中的命名参数?

如何强制函数参数为相同类型并且不允许使用类型构造函数匹配给定类型?

Angular如何传递跳过一些[重复]的可选构造函数参数

将参数从php中的数组传递给构造函数[重复]