Color类封装使用RGB颜色模型表示颜色及相应功能:
定义带3个整数参数r,g,b的构造函数,用于初始化对应于红、绿、蓝三种颜色分量的私有实例对象属性__r, __g, __b。
通过装饰器@property定义3个可以作为只读属性访问的实例对象方法r()、g()、c()
定义不带参、有返回值的亮度计算实例方法luminance: g=0.299r+0.587g+0.114b,返回g
定义不带参、有返回值的彩色转灰度的实例方法toGray: 调用luminance方法获得亮度g,对g取整得y,返回元组(y,y,y)
实例化Color类,使用只读属性输出三个通道值,调用方法toGray、luminance。
定义抽象类shape,包含抽象方法area面积的计算。再定义扩展2个子类Circle、Rectangle,构造函数传入基本参数,重写area方法(不带参有返回值,返回面积)。
定义类柱体Barrel,构造函数两个参(高和Shape对象),方法volume(不带参无返回值)计算柱体体积并输出柱体各项信息,
class Color:
def __init__(self,r,g,b):
self.__r=r
self.__g=g
self.__b=b
@property
def r(self):
return self.__r
@property
def g(self):
return self.__g
@property
def b(self):
return self.__b
def lum(self):
g=0.299*self.__r+0.587*self.__g+0.114*self.__b
return g
def toGray(self):
g=self.lum()
return (int(g),int(g),int(g))
r=255
g=152
b=0
c=Color(r,g,b)
print(f'r={c.r},g={c.g},b={c.b}')
print(c.lum())
print(c.toGray())