Python从另一个类调用方法中的函数

2024-06-06 03:13:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Autodesk Maya中使用Python,但这应该适用于任何地方。在

我有一个名为bRigUI的类,它继承了文件wingUtilities.py中另一个名为wingUtils的类

我可以通过使用继承获得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,向您展示我在做什么,没有那么多混乱。在

^{pr2}$

在UI脚本中输入什么来调用wingUtils类中的方法中的函数cName?在


Tags: 函数textselftxt脚本truedefcname
2条回答

唯一的办法就是把内部函数移到外部范围。你有充分的理由让他们成为内部的职能部门吗?如果是这样的话,你就没办法做你想做的事了。否则,您可以考虑重写该类。目前这三个函数cName()lName()和{}完全不起作用,因为没有代码可以从外部调用它们,它们也不会被内部调用。在这种情况下,只需取消它们的标识,并添加self

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(self, txt):
        n = self.gPrefix + (txt)
    def lName(self, txt):
        n = self.gPrefix + self.lPrefix + (txt)
    def rName(self, txt):
        n = self.gPrefix + self.rPrefix + (txt)

不能。cName是一个局部变量,它只存在于wingUtils.wingUtil的函数上下文中,并且只能通过该函数内的代码访问。在

相关问题 更多 >