я нашел, что методы set/методы get использования сделали мой код легче читать. Мне также нравится контроль, который это дает, когда другие классы используют методы и если я изменю данные, то свойство сохранит.
Вероятно, вам понадобится строка формата %%% s %%
вместо %% s%
.
Два последовательных % Знаки
интерпретируются как буквальные %
, поэтому в вашей версии у вас есть буквальный %
, буквальный s
, а затем одинокий ]%
, который ожидает спецификатор формата после него. Вам нужно удвоить каждый литерал %
, чтобы он не интерпретировался как строка формата, поэтому вы хотите %%% s %%
: literal %
, ]% s
для строки, литерал %
.
вам нужно удвоить знак процента, чтобы избежать его:
>>> '%%%s%%' % 'PLAYER_ID'
'%PLAYER_ID%'
также при итерации по словарю вы можете распаковывать значения в операторе for, например:
def __init__(self, url, **kwargs):
for key, value in kwargs.items():
url = url.replace('%%%s%%' % key, str(value))
Адам почти был прав. Измените свой код на:
def __init__(self, url, **kwargs):
for key in kwargs.keys():
url = url.replace('%%%s%%' % key, str(kwargs[key]))
Если ключ - FOO, тогда '%%% s %%'% key
приведет к '% FOO%'
, и ваш url.replace будет делай что хочешь. В строке формата два процента дают результат в процентах.