Являются ли функции способными иметь двойные имена для своих аргументов в Python? Я имею в виду короткую и полную форму имени переменной.Псевдонимы в именах аргументов функции (двойное именование)
Я постараюсь быть более ясным. Все, кто знаком с Autodesk Maya, знают функцию для создания ограничений. Он имеет некоторые флаги, и вы можете использовать короткий или длинную форму его имя:
maintainOffset (МО), вес (масса), слой (л) и так далее ..
Так вы можете вызвать эту функцию с разными именами, это аргументы, но это дает тот же результат:
cmds.parentConstraint(driverObj, drivenObj, maintainOffset=True, weight=1.0,..)
cmds.parentConstraint(driverObj, drivenObj, maintainOffset=True, w=1.0,..)
cmds.parentConstraint(driverObj, drivenObj, mo=True, weight=1.0,..)
cmds.parentConstraint(driverObj, drivenObj, mo=True, w=True,..)
Как реализовать этот тип поведения в Python 2.7.x? Я активно использую документацию, но не могу найти ответ.
Кроме того, я определил 4 функции для различных типов контрсил: Список
# Parent Constraint
def doParentConstraint(lst, mo = True, w = 1.0, sr = 'None', st = 'None', l = 'None'):
for pair in lst:
cmds.parentConstraint(pair[0], pair[1], maintainOffset = mo, weight = w,
skipRotate = sr, skipTranslate = st, layer = l)
# Orient Constraint
def doOrientConstraint(lst, mo = False, w = 1.0, o = (0.0, 0.0, 0.0), sk = 'None', l = 'None'):
for pair in lst:
cmds.orientConstraint(pair[0], pair[1], maintainOffset = mo, weight = w,
offset = o, skip = sk, layer = l)
# Point Constraint
def doPointConstraint(lst, mo = False, w = 1.0, o = (0.0, 0.0, 0.0), sk = 'None', l = 'None'):
for pair in lst:
cmds.orientConstraint(pair[0], pair[1], maintainOffset = mo, weight = w,
offset = o, skip = sk, layer = l)
# Scale Constraint
def doScaleConstraint(lst, mo = False, w = 1.0, o = (0.0, 0.0, 0.0), sk = 'None', l = 'None'):
for pair in lst:
cmds.orientConstraint(pair[0], pair[1], maintainOffset = mo, weight = w,
offset = o, skip = sk, layer = l)
соединения:
cLst = produceConnectionList(tNodesA, tNodesB)
и какое-то обертку функции для всех эти:
def batchConnect(type = "parentConstraint", ???):
cLst = produceConnectionList(tNodesA, tNodesB)
if type is "parentConstraint": doParentConstraint(cLst, ???)
if type is "orientConstraint": doOrientConstraint(cLst, ???)
if type is "pointConstraint": doPointConstraint(cLst, ???)
if type is "scaleConstraint": doScaleConstraint(cLst, ???)
Но я не знаю, как передать значения между этими функциями и оболочкой, потому что, хотя они имеют одинаковое количество аргументов, но имена аргументов и те типы немного отличаются.
Кроме того, я хочу, чтобы иметь возможность использовать короткие и полную форму названий флагов, когда я звоню обертку:
batchConnect("pointConstraint", mo=False, offset=(0,0,0), weight=1)
batchConnect("pointConstraint", maintainOffset=False, o=(0,0,0), w=1)
должны делать то же самое.
batchConnect("pointConstraint")
без аргументов должны вызвать doPointConstraint() со значениями по умолчанию.
batchConnect()
без указания типа и аргументов вообще должен вызывать по умолчанию doParentConstraint() с этими значениями по умолчанию
спасибо, например – Michael