zoukankan      html  css  js  c++  java
  • Python()- 面向对象的组合用法


    面向对象的组合用法

    一个类中以另一个类的对象作为数据属性(一个类中引用另一个类的对象)
    一种 "有" 的关系:
    比如:定义 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)             #打印圆面积和周长
    

    ############################

    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)
    

      

  • 相关阅读:
    堆和栈的区别!
    产品经理和程序员的爱恨情仇
    字符串MD5加密运算
    事件驱动模型。。。。有时间弄
    Apache服务器httpd.exe进程占用cpu超过50%的解决方法
    ZigBee Xbee S2通讯设置
    pipe-filter 真难找啊
    javacomm64位用不了,可以使用RXTXcomm for x64
    导入 sun.net.TelnetInputStream; 报错
    linux下gedit读取txt乱码解决办法
  • 原文地址:https://www.cnblogs.com/zhzhlong/p/8531574.html
Copyright © 2011-2022 走看看