在Python类构造函数中有“self.somevariable = somevariable”的快捷方式吗? [英] Is there a shortcut for `self.somevariable = somevariable` in a Python class constructor?
本文介绍了在Python类构造函数中有“self.somevariable = somevariable”的快捷方式吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Python中的构造函数通常如下所示:
Constructors in Python often look like this:
class SomeClass:
def __init__(self, a, b = None, c = defC):
self.a = a
self.b = b or []
self.c = c
有一个快捷方式,例如简单定义 __ init __(self,** kwargs)
并使用键作为 self
?
Is there a shortcut for this, e.g. to simply define __init__(self,**kwargs)
and use the keys as properties of self
?
推荐答案
self.__dict__.update(locals())
包括 self
,所以你得到
self.self
。最好从 locals()中过滤
self
is that it includes self
, so you get self.self
. It would be better to filter self
out of locals()
例如
vars(self).update((k,v) for k,v in vars().items() if k != 'self')
您可以防止意外覆盖方法
You can defend against accidentally overwriting methods with this variation
vars(self).update((k,v) for k,v in vars().items()
if k != 'self' and k not in vars(self))
if any(k in vars(self) for k in vars()):
raise blahblah
vars(self).update((k,v) for k,v in vars().items() if k != 'self')
这篇关于在Python类构造函数中有“self.somevariable = somevariable”的快捷方式吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文