我在Autodesk Maya中使用Python,但這應該適用於任何地方。Python - 調用另一個類的方法內的函數
我有一個叫bRigUI
類,它從被稱爲wingUtils
內部文件的wingUtilities.py
繼承另一個類,我可以通過繼承得到的self.gPrefix
/等名稱。但我不知道怎麼去的功能那就是類裏面的函數內如def cName(txt):
這裏是wingUtilities
腳本:
import maya.cmds as cmds
class wingUtils():
def __init__(self):
pass
def wingUtil(self, *args):
self.gPrefix = cmds.textField(self.prefixField, q = True, text = True)
self.lPrefix = cmds.textField(self.leftPrefixField, q = True, text = True)
self.rPrefix = cmds.textField(self.rightPrefixField, q = True, text = True)
def cName(txt):
n = self.gPrefix + (txt)
def lName(txt):
n = self.gPrefix + self.lPrefix + (txt)
def rName(txt):
n = self.gPrefix + self.rPrefix + (txt)
w = wingUtils()
這裏是一個非常簡單化試圖調用它的UI腳本(也是繼承的類) - 這個腳本不會工作,它只是一個shell,向你展示我在做什麼而沒有任何混亂。
import maya.cmds as cmds
import jtWingRigAutomation.wingUtilities as wingUtilities
reload(wingUtilities)
class bRigUI(wingUtilities.wingUtils):
def __init__(self):
bRigUI = 'bRigUI'
if cmds.window(bRigUI, exists = True):
cmds.deleteUI(bRigUI)
bRigUI = cmds.window('bRigUI', title = 'JT Wing Rig Automation')
form = cmds.formLayout()
tabs = cmds.tabLayout(innerMarginWidth = 5, innerMarginHeight = 5)
cmds.formLayout(form, e = True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)))
tab2 = cmds.rowColumnLayout('Wing Setup', parent = tabs)
cmds.text(self.naming(), parent = tab2)
cmds.showWindow(bRigUI)
cmds.window(bRigUI, e = True, w = 250, h = 500)
b = bRigUI()
我怎麼在UI腳本進入到wingUtils
類中的方法中調用該函數cName
?
這就是爲什麼聲明函數內的功能被認爲是拙劣的形式在所有的Python程序員,我知道。最好在課堂上宣佈他們,如果你想表明他們打算供私人使用,可能會有前面的_。例如'def _rName(self,txt):' – chmullig 2013-02-25 01:25:42
@chmullig,除非你想創建一個裝飾器,否則返回一個函數對象。但在這種情況下,它看起來像是一個縮進錯誤。 – joojaa 2013-02-25 13:06:50