2013-04-08 114 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