如何替换 python 中源代码中的文本

How can I replace text in source code in python

我在blender中使用python,从2.80开始有版本升级。 我想保持向后兼容性。 例如旧式代码是:

class fixFaces(bpy.types.Operator):
    feetMesaure = BoolProperty(name="feet measure", description="feet measure", default=True)

较新的样式是:

class fixFaces(bpy.types.Operator):
    feetMesaure : BoolProperty(name="feet measure", description="feet measure", default=True)

我可以检测到 blender 版本。有没有办法在一个代码中同时使用旧样式和新样式?

例如在 C 中,我可以这样做:

#ifdef _VERSION < 2.80
    #define _EQ =
#else
    #define _EQ :
#endif

feetMesaure _EQ BoolProperty(name="feet measure", description="feet measure", default=True)

我读到了 python 宏,但这并不干净,我应该如何使用它。

您可以尝试使用 python 的 eval 或 exec 语句捕获 SyntaxError 异常。 ':' 运算符在旧版本中会给出 SyntaxError,而在新版本中,代码将成功执行。尝试-

try:
     eval('feetMesaure : BoolProperty(name="feet measure", description="feet measure", default=True)')
except SyntaxError:
     feetMesaure = BoolProperty(name="feet measure", description="feet measure", default=True)

这里有更多信息 link - Failed to catch syntax error python