で、mayaのバージョンごとに処理を変える方法ないかなーと思っていたので↑を参考にデコレータで実装してみました。
最後の行でdoSomething関数を実行していますが、同じ関数名でもmayaのバージョンによって処理が変わります。
import maya.cmds as cmds maya_version = cmds.about(version=1) # mayaのバージョン ## バージョンごとに関数(メソッド)の処理を変えるデコレータ class DoOnVertion(object): ## 初期化 def __init__(self, func): self.func = func ## 関数のように呼び出された時の処理 # self.funcを実行する def __call__(self, *args, **kwargs): return self.func(*args, **kwargs) ## 指定されたバージョンとmayaバージョンが合っていれば関数(メソッド)を置き換える def version(self, version): print 'Replace funcition if version is [{0}].'.format(version) def new_func(func): if maya_version == version: rtn = func else: rtn = self.func return type(self)(rtn) return new_func # 指定バージョン以外のときの処理 @DoOnVertion def doSomething(name=None): print 'do something with argument [{0}].'.format(name) # バージョン2015で実行したときの処理 @doSomething.version('2015') def doSomething(name='cube'): cmds.polyCube(name=name) # バージョン2016で実行したときの処理 @doSomething.version('2016') def doSomething(name='joint'): cmds.createNode('joint', name=name) # バージョン2017で実行したときの処理 @doSomething.version('2017') def doSomething(name='transform'): cmds.createNode('transform', name=name) # doSomething関数の実行 # 実行するmayaのバージョンによって処理が変わる doSomething()