I'm not understanding any online documentation about how to make inheritance work.
I have this here:
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)
But it's complaining that there is no self.items - I have to inherit it from another class which is far too large to post here. Can anyone help me figure out how to do that? I've researched online and nothing makes any sense.
The other class is in a different file altogether.
2 Answers 2
To inherit from another class do:
class RigLegs(base_class_name):
An Example:
class base_class():
items = [1,2,3]
class pie(base_class):
def __init__(self):
print (self.items)
instance = pie()
You can read more in the Python Documentation
With imports:
file (apples.py)
class base():
items = [1,3,4]
file (main_file.py)
import apples
class pie(apples.base):
def __init__(self):
self.pies()
def pies(self):
print(self.items)
instance = pie()
5 Comments
class RigLegs(UI_file_name.UI_class_name) it still claims that RigLegs has no attribute "items"class RigLegs(jtAutoRigUI.RigUI): after import jtAutoRigUIRigUI class into the question and i'll see if I can help. Right now though it looks as if there isn't actually an items variable in RigUIIn the class declaration: class RigLegs(), you should include all the classes you want to inherit from, such as in:
class RigLegs(Ancestor1, Ancestor2):
# Your code chere.
Don't forget that you still need to call the initialization logic of your ancestors.
def __init__(self):
super(RigLegs, self).__init__()
8 Comments
items, don't you think?__init__ method; which is where items was defined ;). See my edit.super() argument 1 must be type, not classobjRigUI class needs to inherit from object: class RigUI(object). Otherwise, replace the super call with RigLegs.__init__(self).
class RigLegs(ParentClass)?