Python 面向对象-----组合

组合:对象的属性值 是另一个类的对象

两个实例:

#第一种
#创建一个圆的类,有面积方法,和周长方法
from math import pi
class Circle():
    def __init__(self,r):#半径
        self.r=r
    def area(self):#计算面积
        return self.r**2 *pi
    def perimeter(self):#计算周长
        return 2*pi*self.r

#创建一个圆环类,有
class Ring():
    def __init__(self,out_r,in_r):#外半径和内半径
        self.out_r=Circle(out_r)#外半径的值是Circle类的对象
        self.in_r=Circle(in_r)#内半径的值是Circle类的对象
    def area(self):#计算面积=大圆半径-小圆半径
        return self.out_r.area()-self.in_r.area()
    def perimeter(self):#计算周长=内周长+外周长
        return self.out_r.perimeter()+self.in_r.perimeter()
ring=Ring(20,10)
print(ring.area())
print(ring.perimeter())


#第二种

#创建Teacher类
class Teacher():
    def __init__(self,name,age):#属性为name,age
        self.age=age
        self.name=name
    def speech(self):#演讲方法
        print(self.name)
#创建一个School类
class School():
    def __init__(self,name,area):#校名,校面积
        self.name=name
        self.area=area


#实例化
t1=Teacher('张三',21)
t2=Teacher('李四',22)


schooll1=School('一中',10000)
school12=School('二中',12000)

#外部添加属性,并且属性值为school的对象
t1.school=schooll1
t2.school=school12

#查看老师对应的学校
t_for_school=t1.school.name
t_for_school2=t2.school.name

print(t_for_school)
print(t_for_school2)

猜你喜欢

转载自blog.csdn.net/qq_39062888/article/details/89366815