如何替换 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
我在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