python中有关类嵌套调用的问题

class Color():
    def __init__(self,index = 0):
        self.set_color = ['white','red','black','green']
        self.index = index
    def setColor(self):
        return self.set_color[self.index]
class Box1():
    '''求立方体体积的类'''
    def __init__(self,lenght1,width1,height1,c1 = 0):
        self.lenght = lenght1
        self.width = width1
        self.height = height1
        self.color = Color(c1).setColor()
    def volume(self):
        return self.height*self.width*self.lenght
my_box1 = Box1(10,10,10,1)
print('立方体体积是%d'%(my_box1.volume()))
print(my_box1.color)
print(type(Box1))

第13行的参数为啥是写到Color()里面?在定义Color的时候不是不带参数的吗?

Color类里面有__init__,就相当于构造方法,里面的第二个参数就是

c1是传给__init__方法中的index;

注意Box1类中的构造方法中self.color = Color(c1).setColor(),这一行代码是创建实例的color属性,

该属性是从以默认值参数c1=0实例化Color类并使用该实例的setColor方法获得。

上述代码当不指定c1时实例化Box1时得到的color属性是"white"。注意:这里存在缺陷,当指定c1值不是0、1、2、3时代码会报错,setColor方法中未对index范围作判断。