У меня есть словарь функций.Я хотел бы иметь возможность использовать ту же клавишу для доступа к словарю функций.Есть ли способ сделать это в Python 2?
Это можно закрыть сейчас.Я обнаружил свою ошибку кодирования снизу!
У меня есть существующая программа проверки синтаксиса для набора файлов разметки, разрабатываемых несколькими редакторами.Мы пришли к выводу, что существующие требования к синтаксису не обладают достаточной спецификой для обеспечения единообразия контента между редакторами.Приведенные ниже выдержки из кода относятся к добавлению этих новых требований к этому контролеру.Я НЕ включил ни один из существующих кодов проверки, так как это не относится к использованию словаря функций.Я добавил однострочный комментарий перед каждым разделом, чтобы указать функцию кода.Запуск этой check_routine не «вызывает» желаемую низкоуровневую процедуру: Term_period
class xyz_syntax_checker(object):
# syntax requirements of needed tests for each markdown marker data: LD through SSM
self.LD_Req = {"LD1" : "Grk", "LD2" : "NA", "MSep":"comma", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"NA"}
self.WD_Req = {"LD1" : "NA", "LD2" : "NA", "MSep":"NA", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"NA"}
self.ST_Req = {"LD1" : "Grk", "LD2" : "NA", "MSep":"NA", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"NA"}
self.AS_Req = {"LD1" : "Grk", "LD2" : "NA", "MSep":"comma", "Rqd":"NA", "AD1":"semicolon", "AD2":"NA", "Term":"period"}
self.PP_Req = {"LD1" : "NA", "LD2" : "NA", "MSep":"NA", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"NA"}
self.PO_Req = {"LD1" : "UGG", "LD2" : "NA", "MSep":"comma", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"period"}
self.IN_Req = {"LD1" :"number", "LD2" : "NA", "MSep":"NA", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"period"}
self.AL_Req = {"LD1" : "YN", "LD2" : "NA", "MSep":"NA", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"period"}
self.ET_Req = {"LD1" : "LL", "LD2" : "NA", "MSep":"comma", "Rqd":"colon", "AD1":"colon", "AD2":"NA", "Term":"period"}
self.LX_Req = {"LD1" : "HL", "LD2" : "CL", "MSep":"comma", "Rqd":"NA", "AD1":"colon", "AD2":"semicolon", "Term":"period"}
self.TP_Req = {"LD1" : "NA", "LD2" : "NA", "MSep":"NA", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"period"}
self.RW_Req = {"LD1" : "LL", "LD2" : "NA", "MSep":"comma", "Rqd":"colon", "AD1":"semicolon", "AD2":"NA", "Term":"period"}
self.AN_Req = {"LD1" : "LL", "LD2" : "NA", "MSep":"comma", "Rqd":"colon", "AD1":"semicolon", "AD2":"NA", "Term":"period"}
self.SN_Req = {"LD1" : "LL", "LD2" : "NA", "MSep":"comma", "Rqd":"colon", "AD1":"semicolon", "AD2":"NA", "Term":"period"}
self.SS_Req = {"LD1" : "NA", "LD2" : "NA", "MSep":"NA", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"NA"}
self.SSM_Req = {"LD1" : "SSL", "LD2" : "NA", "MSep":"NA", "Rqd":"NA", "AD1":"NA", "AD2":"NA", "Term":"colon"}
# hash table map
self.All_Req = {
"LD":self.LD_Req,
"WD":self.WD_Req,
"ST":self.ST_Req,
"AS":self.AS_Req,
"PP":self.PP_Req,
"PO":self.PO_Req,
"IN":self.IN_Req,
"AL":self.AL_Req,
"ET":self.ET_Req,
"LX":self.LX_Req,
"TP":self.TP_Req,
"RW":self.RW_Req,
"AN":self.AN_Req,
"SN":self.SN_Req,
"SS":self.SS_Req,
"SSM":self.SSM_Req}
# dummy examples of low-level defs that will do the work - only Term_period has content
def Term_NA (self):
return ''
def Term_colon (self):
return ''
def Term_period (self):
if self.Current_Marker == '':
return ''
print 'len tmd,cm',len(self.marker_data[self.Current_Marker]),self.Current_Marker
this_marker_data = self.marker_data[self.Current_Marker].rstrip()
lastchar = this_marker_data[-1]
print 'Current marker',self.Current_Marker,'data does not end in a period'
return ''
# hash table for those low-level defs - f(requirements)
self.action_mapping = {
"Term_NA" : self.Term_NA(),
"Term_colon" : self.Term_colon(),
"Term_period" : self.Term_period()
}
# intermediate def to call those - amalgamation of common logic for each call
def call_action_key(self,this_action):
self.Action_Key = this_action + '_' + self.All_Req[self.Current_Marker][this_action]
print 'ta,AK',this_action,self.Action_Key
o = self.action_mapping[self.Action_Key]
return o
# pseudo top-level def for this new checking/testing
def checker_routine(self):
self.Current_Marker = 'PO'
o = self.call_action_key.get('Term')