假設有一個帶有構造函數(或其他函數)的類,該類帶有可變數量的參數,然後將它們有條件地設置爲類屬性。如何在python中設置可變參數(kwargs)的類屬性
我可以手動設置它們,但似乎變量參數在python中已經足夠普遍,應該有一個常見的習慣用法。但我不知道如何動態地做到這一點。
我有一個使用eval的例子,但這不是安全的。我想知道正確的方法來做到這一點 - 也許與lambda?
class Foo:
def setAllManually(self, a=None, b=None, c=None):
if a!=None:
self.a = a
if b!=None:
self.b = b
if c!=None:
self.c = c
def setAllWithEval(self, **kwargs):
for key in **kwargs:
if kwargs[param] != None
eval("self." + key + "=" + kwargs[param])
它看起來像這些問題是相似的:http://stackoverflow.com/questions/3884612/automatically-setting-class-member-在python中的變量http://stackoverflow.com/questions/356718/how-to-handle-constructors-or-methods-with-a-different-set-or-type-of-argument http:// stackoverflow。 com/questions/1446555/python-decorator-to-ensure-that-kwargs-are-correct,因此它看起來像我想要的可能是this-- self .__ dict __ [key] = kwargs [key] – fijiaaron
與你無關問題,但你可能想檢查[PEP8](http://www.python.org/dev/peps/pep-0008/)關於傳統Python樣式的一些提示。 –
這裏有一個很棒的圖書館,叫做attrs。只需'pip install attrs',用'@ attr.s'裝飾你的類,並設置參數爲'a = attr.ib(); b = attr.ib()'等。閱讀更多[這裏](https://glyph.twistedmatrix.com/2016/08/attrs.html)。 –