Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用**kwargs输出初始化:未定义参数_Python_Class - Fatal编程技术网

Python 使用**kwargs输出初始化:未定义参数

Python 使用**kwargs输出初始化:未定义参数,python,class,Python,Class,我有一个有几个参数的类,它们有默认值。在程序中,有时类中使用的值会随着用户的输入而改变 我是这样想的。该类接受名为group\u size(默认为w/8)的整数,以及名为bounds(默认为True)的布尔值。有时,用户希望更改界限,并将最大秩设置为用户提供的不同整数值 我对我的类的定义如下: 阶级社会: def uuu init uuuu(自身、组大小=8、边界=True、**kwargs): self.group\u size=组大小 如果bounds==True: self.max\u秩=

我有一个有几个参数的类,它们有默认值。在程序中,有时类中使用的值会随着用户的输入而改变

我是这样想的。该类接受名为
group\u size
(默认为w/8)的整数,以及名为
bounds
(默认为True)的布尔值。有时,用户希望更改
界限
,并将
最大秩
设置为用户提供的不同整数值

我对我的类的定义如下:

阶级社会:
def uuu init uuuu(自身、组大小=8、边界=True、**kwargs):
self.group\u size=组大小
如果bounds==True:
self.max\u秩=组大小
其他:
self.max\u秩=max\u秩
但当我调用它来更改max_rank的值时,如下所示:

S=Society(bounds=False,**{'max_rank':10})
或者像这样:

S=Society(界限=False,最高等级=10)
我得到了相同的错误
name错误:没有定义名称“max\u rank”
。对于第一个错误,它指向同一行代码,而对于另一个错误,它指向类内部,我将
max\u-rank
分配给
self.max\u-rank

第一个错误:

---------------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
在里面
---->1 S=社会(界限=假,**{max_秩:10})
NameError:未定义名称“max_rank”
第二个错误:

---------------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
在里面
---->1 S=社会(界限=假,最高等级=10)
在初始化中(自我、组、组大小、b、c、噪声、上排、边界、*args、**kwargs)
49 self.max\u秩=组大小
50其他:
--->51 self.max\u秩=max\u秩
52
53
NameError:未定义名称“max_rank”
我是否必须(或可以)定义接受**KWARG的方式?像那些名字?
可能当我实例化类时,我传递kwargs的方式不好。

您想从
kwargs
字典中提取
max\u rank

if bounds == True:
    self.max_rank = group_size
else:
    #Extract max_rank out of kwargs
    max_rank = kwargs.get('max_rank')
    self.max_rank = max_rank

您想从
kwargs
字典中提取
max_rank

if bounds == True:
    self.max_rank = group_size
else:
    #Extract max_rank out of kwargs
    max_rank = kwargs.get('max_rank')
    self.max_rank = max_rank

max_rank
作为arg传递给其他参数,然后从
kwargs
方法中提取它

代码如下:

阶级社会:
def uuu init uuuu(自身、组大小=8、边界=True、**kwargs):
self.group\u size=组大小
如果bounds==True:
self.max\u秩=组大小
其他:
max\u rank=kwargs.get('max\u rank'))
self.max\u秩=max\u秩
S=社会(界限=假,最大等级=10)
打印(S.max_秩)
输出

十,


max_rank
作为arg传递给其他参数,然后从
kwargs
方法中提取它

代码如下:

阶级社会:
def uuu init uuuu(自身、组大小=8、边界=True、**kwargs):
self.group\u size=组大小
如果bounds==True:
self.max\u秩=组大小
其他:
max\u rank=kwargs.get('max\u rank'))
self.max\u秩=max\u秩
S=社会(界限=假,最大等级=10)
打印(S.max_秩)
输出

十,

S=Society(bounds=False,**{max\u rank:10})
给出了一个错误,因为您没有引用
max\u rank
。请改为尝试
S=Society(bounds=False,***{“max\u rank”:10})
。此
Society(bounds=False,max\u rank:10)
语法无效。
应该是
=
S=Society(bounds=False,**{max\u rank:10})
给出了一个错误,因为您没有引用
max\u rank
。请改为尝试
S=Society(bounds=False,***{“max\u rank”:10})
。此
Society(bounds=False,max\u rank:10)
语法无效。
应该是
=