Консенсус заключается в использовании словаря для этого - см. другие ответы. Это хорошая идея для большинства случаев, однако есть много аспектов, связанных с этим:
Тем не менее, я реализовал variable variables manager -класс, который предоставляет некоторые из вышеперечисленных идей. Он работает для python 2 и 3.
Вы использовали бы класс следующим образом:
from variableVariablesManager import VariableVariablesManager
myVars = VariableVariablesManager()
myVars['test'] = 25
print(myVars['test'])
# define a const variable
myVars.defineConstVariable('myconst', 13)
try:
myVars['myconst'] = 14 # <- this raises an error, since 'myconst' must not be changed
print("not allowed")
except AttributeError as e:
pass
# rename a variable
myVars.renameVariable('myconst', 'myconstOther')
# preserve locality
def testLocalVar():
myVars = VariableVariablesManager()
myVars['test'] = 13
print("inside function myVars['test']:", myVars['test'])
testLocalVar()
print("outside function myVars['test']:", myVars['test'])
# define a global variable
myVars.defineGlobalVariable('globalVar', 12)
def testGlobalVar():
myVars = VariableVariablesManager()
print("inside function myVars['globalVar']:", myVars['globalVar'])
myVars['globalVar'] = 13
print("inside function myVars['globalVar'] (having been changed):", myVars['globalVar'])
testGlobalVar()
print("outside function myVars['globalVar']:", myVars['globalVar'])
Если вы хотите разрешить переписывание переменных с помощью только тот же тип:
myVars = VariableVariablesManager(enforceSameTypeOnOverride = True)
myVars['test'] = 25
myVars['test'] = "Cat" # <- raises Exception (different type on overwriting)
Вероятно, лучший и самый простой способ добиться того, что вам нужно, - использовать встроенный инструмент анализа кода в Visual Studio, чтобы найти и принять вас непосредственно к мертвому коду и неиспользуемым членам.
К этому эффект, я просто создал новый файл набора правил анализа кода (Via File-> New-> File, убедившись, что General на левой панели был выбран и прокручивается вниз, чтобы найти набор правил анализа кода, указав ему имя файла, затем выполните поиск и выбор ниже). Ниже приведено содержимое файла набора правил, которое вы можете просто скопировать, и вставьте его в новый файл с расширением .ruleset для использования.
С учетом файла набора правил можно щелкнуть правой кнопкой мыши по файлу проекта в панель «Проводник решений» и выберите «Свойства». В окне свойств проекта щелкните вкладку «Анализ кода» на левой панели, а затем нажмите «Открыть», чтобы перейти к местоположению файла .ruleset. Если вы перейдете к свойствам файла решения (в отличие от файла проекта), вы можете установить файл анализа кода для каждого проекта в решении в одном месте (в разделе «Параметры анализа кода» и используя раскрывающийся список там, чтобы выбрать файл набора правил. ПРИМЕЧАНИЕ: вы, должно быть, ранее просмотрели файл набора правил, чтобы он отображался в раскрывающемся списке в этом окне свойств, однако).
Затем вы просто запускаете анализ кода на проекты / решение (Via Analyze-> Run Code Analysis On Solution -OR- Alt + F11), и он будет возвращаться в виде предупреждений, любых неописанных методов или неиспользуемых элементов, которые он находит.
Будьте осторожны, так как один из способов анализа кода для мертвого кода может направить вас неправильно, это если ссылка «скрыта», только когда-либо вызывающая метод через делегатов и, конечно же, отражение.
Правилами обнаружения мертвого кода, в частности, являются:
Ниже приведено содержимое файла .ruleset, которое можно выполнить, выполнив описанные выше шаги для вашего соответствия. Вы можете просто скопировать приведенный ниже XML, вставить его в блокнот ++, сохранить где-нибудь с расширением .ruleset, просмотреть и использовать, как описано выше:
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Dead Code Rules" Description=" " ToolsVersion="12.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1801" Action="Warning" />
<Rule Id="CA1804" Action="Warning" />
<Rule Id="CA1811" Action="Warning" />
<Rule Id="CA1812" Action="Warning" />
<Rule Id="CA1823" Action="Warning" />
</Rules>
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C6259" Action="Warning" />
</Rules>
</RuleSet>
Надеюсь, это вам поможет, и не забудьте выберите лучший ответ.