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). Так работает для "публичных" и "защищенных" переменных