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)
语法无效。:
应该是=