【发布时间】:2016-10-13 06:26:25
【问题描述】:
这些天我正在使用 ANTLR 来解析一些语言。我选择使用 Python。 ANTLR 生成的解析器类包含许多名称相似的方法:
class autogeneratedparser(xxx):
def something_enter(self,ctx):
pass
def something_exit(self,ctx)
pass
我通过定义一个继承类来覆盖这些
class myclass(autogeneratedparser)
particularthing = False
def particularthing_enter(self,ctx):
print(ctx.name)
myclass.particularthing = true
def particularthing_exit(self,ctx):
print(ctx.name)
myclass.particularthing = false
我想动态地自动生成所有这些方法,包括更改它们各自的变量名。在伪代码中:
generate for particularthing in anything:
$(particularthing) = False
def $(particularthing)_enter(self,ctx):
print(ctx.name)
myclass.$(particularthing) = true
def $(particularthing)_exit(self,ctx):
print(ctx.name)
myclass.$(particularthing) = false
我显然可以告诉 vim 这样做,但我确信 Python 也有办法,只是不知道怎么做 :-)
感谢您的宝贵意见 :)
【问题讨论】:
标签: python dynamic methods lambda