2013-04-08 111 views
0

我不明白如何让继承工作的任何在线文档。Python的 - 继承

我有这样的位置:

import maya.cmds as cmds 


class RigLegs(): 
    def __init__(self, *args): 
     self.rigLegs() 

    def rigLegs(self): 
     self.items["side"] = "left" 
     self.lIK = cmds.duplicate(self.lJoints["hip"], n = self.getName("hip_IK")) 
     for i in self.lIK: 
      newName = i[0].replace("_JNT", "_IK") 
      cmds.rename(i, newName) 

但它的抱怨是没有self.items - 我不得不从另一个类,这是过于庞大,张贴在这里继承它。任何人都可以帮我弄清楚如何做到这一点?我在网上进行过研究,没有任何意义。

其他类完全在不同的文件中。

+0

'类RigLegs(父类)'? – Ryan 2013-04-08 23:10:59

回答

0

在类声明:class RigLegs(),你应该包括所有你要继承,比如在类:

class RigLegs(Ancestor1, Ancestor2): 
    # Your code chere. 

不要忘了,你仍然需要打电话给你的祖先的初始化逻辑。

def __init__(self): 
     super(RigLegs, self).__init__() 
+0

至于其他建议说,这是行不通的。它仍然声称没有属性“项目”。 – Vii 2013-04-08 23:33:07

+1

@ user1090427那么这可能是因为你的祖先没有定义'items',你不觉得吗? – 2013-04-08 23:54:30

+0

他们这样做,虽然http://pastebin.com/m3XctSMR – Vii 2013-04-09 01:50:02

3

从另一个类继承做:

class RigLegs(base_class_name): 

一个例子:

class base_class(): 
    items = [1,2,3] 

class pie(base_class): 
    def __init__(self): 
     print (self.items) 

instance = pie() 

你可以阅读更多的Python Documentation


由于进口:

文件(apples.py)

class base(): 
    items = [1,3,4] 

文件(main_file.py)

import apples 

class pie(apples.base): 
    def __init__(self): 
     self.pies() 

    def pies(self): 
     print(self.items) 

instance = pie() 
+0

它不起作用。他们在不同的文件中,所以我导入它,并通过说'class RigLegs(UI_file_name.UI_class_name)'继承该类,它仍然声称RigLegs没有属性“项目” – Vii 2013-04-08 23:30:55

+0

您确定您正确导入它吗?如果它们分成不同的文件,它对我来说工作得很好。 – Serdalis 2013-04-08 23:34:23

+0

是的,我知道如何正确导入:(我使用'class RigLegs(jtAutoRigUI.RigUI):'在'import jtAutoRigUI'后' – Vii 2013-04-08 23:36:46