मान लीजिए कि मेरे पास एक कंस्ट्रक्टर (या अन्य फ़ंक्शन) के साथ एक वर्ग है जो एक चर संख्या के तर्क लेता है और फिर उन्हें सशर्त रूप से वर्ग विशेषताओं के रूप में सेट करता है।
मैं उन्हें मैन्युअल रूप से सेट कर सकता था, लेकिन ऐसा लगता है कि चर पैरामीटर अजगर में पर्याप्त सामान्य हैं कि ऐसा करने के लिए एक सामान्य मुहावरा होना चाहिए। लेकिन मुझे यकीन नहीं है कि यह कैसे गतिशील है।
मेरे पास eval का उपयोग करके एक उदाहरण है, लेकिन यह शायद ही सुरक्षित है। मैं ऐसा करने का उचित तरीका जानना चाहता हूं - शायद मेमने के साथ?
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])
pip install attrs, के साथ अपनी कक्षा को सजाने के लिए @attr.s, और a = attr.ib(); b = attr.ib()आदि के रूप में सेट करें ।