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范围作判断。