python 3 как подставить переменную в строку без кавычек

мне нужно подставить переменную в строку без кавычек:

self.__{key} = value

Если что вот вся функция:

def setItem(self, **kwargs):
        for key, value in kwargs.items():
            self.__{key} = value

Ответы (1 шт):

Автор решения: splash58

в случае, если имя переменной начинается с двух подчеркиваний, python, по крайней мере 3.8, строит имя переменной в словаре иначе, добавляя в начало имя класса. Я привел ниже вывод словаря.

 class A :
    def setItem(self, **kwargs):
        for key, value in kwargs.items():
            self.__dict__['_'+self.__class__.__name__+'__'+key] = value

     print(self.__dict__)    # {'_A__tea': 'sdfsdf', '_A__soup': 'asd'}           

     print(self.__tea)       # sdfsdf

a = A()
a.setItem(tea='sdfsdf', soup='asd')

Если же использовать не "приватные" переменные, то действительно можно просто сделать setattr(self, "_" + key, value). Так работает для "публичных" и "защищенных" переменных

→ Ссылка