zoukankan      html  css  js  c++  java
  • 面向对象组合用法

    面向对象的组合用法

    一个类中以另一个类的对象作为数据属性(一个类中引用另一个类的对象)
    一种 "有" 的关系:
    比如:定义 1个人类 & 1个武器类 然后 张三 有 枪 李四 有 刀

    from math import pi
     
    class Circle:
    '''
    定义了一个圆形类;
    提供计算面积(area)和周长(perimeter)的方法
    '''
    def __init__(self,radius):
    self.radius = radius
     
    def area(self):
    return pi * self.radius * self.radius
     
    def perimeter(self):
    return 2 * pi *self.radius
     
     
    circle = Circle(10)             #实例化一个圆
    area1 = circle.area()         #计算圆面积
    per1 = circle.perimeter()     #计算圆周长
    print(area1,per1)             #打印圆面积和周长
    <br><br>############################<br><br>
    class Ring:
    '''
    定义了一个圆环类
    提供圆环的面积和周长的方法
    '''
    def __init__(self,radius_outside,radius_inside):
    self.outsid_circle = Circle(radius_outside)         #*****直接在一个类中生成另一个类的对象(也可以参数直接传入一个类的对象)
    self.inside_circle = Circle(radius_inside)
     
    def area(self):
    return self.outsid_circle.area() - self.inside_circle.area()
     
    def perimeter(self):
    return self.outsid_circle.perimeter() + self.inside_circle.perimeter()
     
     
    ring = Ring(10,5)                 #实例化一个环形
    print(ring.perimeter())         #计算环形的周长
    print(ring.area())                 #计算环形的面积

    ===========================

    class BirthDate:
    def __init__(self,year,month,day):
    self.year=year
    self.month=month
    self.day=day
     
    class Couse:
    def __init__(self,name,price,period):
    self.name=name
    self.price=price
    self.period=period
     
    class Teacher:
    def __init__(self,name,gender,birth,course):
    self.name=name
    self.gender=gender
    self.birth=birth
    self.course=course
    def teach(self):
    print('teaching')
     
    p1=Teacher('','male',
    BirthDate('1995','1','27'),             #传进去的是对象
    Couse('python','28000','8 months')
    )
     
    print(p1.birth.year,p1.birth.month,p1.birth.day)
     
    print(p1.course.name,p1.course.price,p1.course.period)
  • 相关阅读:
    开源项目cmdbuild-搭建
    开源项目cmdbuild-寄语
    四 上下文切换
    withRouter的作用和一个简单应用
    封装react组件:显示五星评价
    简单使用 Easy Mock-创建线上伪数据
    react中避免内存泄漏的方法
    react中constructor和super的使用
    使用swiper设计移动端轮播图(https://www.swiper.com.cn/)
    vuex模块化练习-购物车
  • 原文地址:https://www.cnblogs.com/jin-yuana/p/10025086.html
Copyright © 2011-2022 走看看