Python 面向对象-----组合
程序员文章站
2024-03-15 21:03:51
...
组合:对象的属性值 是另一个类的对象
两个实例:
#第一种
#创建一个圆的类,有面积方法,和周长方法
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)