我正在使用CherryPy。我有一个名为“zh-cn”的文件夹 - 这意味着我使用的是中国大陆的中文版 - 简体中文。
这是我的代码。注意我是如何使用下划线的?这很有效。
class ChineseFlashcards:
zh_cn = ChineseFlashcards_zh_cn()
en = ChineseFlashcards_en()
我的问题是我宁愿使用连字符,因为我觉得它“更正确”。但是,您可能不会在Python中使用类似的连字符。这不被允许。这会引发错误:
class ChineseFlashcards:
zh-cn = ChineseFlashcards_zh_cn()
en = ChineseFlashcards_en()
我正在寻找的是某种将标识符别名的CherryPy属性。这样的事情(但这不合法)
class ChineseFlashcards:
@cherrypy.expose(alias=['zh-cn'])
zh_cn = ChineseFlashcards_zh_cn()
en = ChineseFlashcards_en()
任何人都有解决方案吗?
答案 0 :(得分:3)
解决方案1:如果您使用的是CherryPy 3.2或更高版本,请将其称为“zh_cn”。见http://docs.cherrypy.org/dev/concepts/dispatching.html#special-characters
解决方案2:您可以使用setattr
绑定非合法Python标识符的属性名称:
class ChineseFlashcards:
en = ChineseFlashcards_en()
setattr(ChineseFlashcards, 'zh-cn', ChineseFlashcards_zh_cn())
答案 1 :(得分:0)
最简单的解决方案可能是在您自己的index
方法中处理它。像这样的东西:
class ChineseFlashcards:
zh_cn = ChineseFlashcards_zh_cn()
en = ChineseFlashcards_en()
aliases = {'zh-cn': zh_cn}
@cherrypy.expose
def index(self, locale, *args, **kwargs):
if arg in self.aliases:
return aliases[locale](*args, **kwargs)
en
仍然可以正常工作,zh_cn
也是如此,任何无法识别的网址都会通过index
,它会查看自己的别名字典。