Misalkan saya memiliki kelas dengan konstruktor (atau fungsi lain) yang mengambil sejumlah variabel argumen dan kemudian menetapkannya sebagai atribut kelas secara kondisional.
Saya dapat mengaturnya secara manual, tetapi tampaknya parameter variabel cukup umum di python sehingga harus ada idiom umum untuk melakukan ini. Tapi saya tidak yakin bagaimana melakukan ini secara dinamis.
Saya punya contoh menggunakan eval, tapi itu hampir tidak aman. Saya ingin tahu cara yang tepat untuk melakukan ini - mungkin dengan 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])
pip install attrs, hiasi kelas Anda dengan @attr.s, dan setel argumen sebagai a = attr.ib(); b = attr.ib()dll. Baca lebih lanjut di sini .