• day23 03 组合的例子


    day23 03 组合的例子

    一、用到组合的方式,编写一个圆环,并能够计算出它的周长和面积

     1 from math import pi  # 从内置函数里面导入pi
     2 # 先定义一个圆类
     3 class Circle:
     4     def __init__(self,r):  # 初始化和self的创建,一个圆的属性就是半径
     5         self.r = r  # 赋值
     6 
     7     def area(self):  # 和圆相关的方法,计算圆的面积
     8         return self.r**2 * pi
     9     def perimeter(self):  # 和圆相关的方法,计算圆的面积
    10         return 2*pi*self.r
    11 
    12 # 再定义一个圆环类
    13 class Ring:
    14     def __init__(self,outside_r,inside_r):  # 初始化和self的创建,一个圆环的属性外半径和内半径
    15         self.outside_c = Circle(outside_r)  # 圆环的外半径通过圆类的半径赋值
    16         self.inside_c = Circle(inside_r)  # 圆环的内半径也是通过圆类的半径赋值
    17     def area(self):
    18         return self.outside_c.area() - self.inside_c.area()  # 直接引用圆类里面的计算面积的area方法,这里就涉及了组合的方法
    19     def perimeter(self):
    20         return self.outside_c.perimeter() + self.inside_c.perimeter()  # 直接引用圆类里面的计算周长的perimeter方法,这里就涉及了组合的方法
    21 ring = Ring(20,10)
    22 print(ring.area())  # 计算圆环的面积
    23 print(ring.perimeter())  # 计算圆环的周长

    运行结果:

    C:Userssku1-1PycharmProjectsuntitledvenvScriptspython.exe "C:/Users/sku1-1/PycharmProjects/untitled/day23  03 组合例子.py"
    942.4777960769379
    188.49555921538757
    
    Process finished with exit code 0

    二、创建一个老师类,老师有生日,生日也是一个类,涉及组合的方法

    class Teacher:
        def __init__(self,name,age,sex,birthday):
            self.name = name
            self.age = age
            self.sex = sex
            self.birthday = birthday
    
    class Birthhday:
        def __init__(self,year,month,day):
            self.year = year
            self.month = month
            self.day = day
    
    b = Birthhday(2000,5,1)  # 实例化
    teacher = Teacher('丽丽',18,'',b)  # 实例化
    print(teacher.name)
    print(teacher.birthday.year)  # 这里涉及了组合
    print(teacher.birthday.day)  # 这里涉及了组合

    运行结果:

    C:Userssku1-1PycharmProjectsuntitledvenvScriptspython.exe "C:/Users/sku1-1/PycharmProjects/untitled/day23  03 组合例子.py"
    丽丽
    2000
    1
    
    Process finished with exit code 0

    三、复习

    1、面向对象编程

      思想:角色的抽象,创建类,创建角色(实例化),操作这些实例

      关键字:class

    基本框架:

    class 类名:
        静态属性='aaaa'
        def _init_(self):
            pass

    2、类名与对象的操作

    类名.静态属性----存储在类的命名空间里面

    对象=类名()----实例化过程:创建了一个self对象,执行_init_方法初始化,返回self对象给外部

    对象.属性

    对象.方法===类名.方法(对象)

    对象可以使用静态变量

    类不可以使用对象里面的属性

    3、组合:至少有两个类,是什么有什么的关系(这两个什么指的都是类),通过一个类去查看另一个类的属性

    一个类的对象是另外一个类对象的属性

  • 相关阅读:
    mysq,oraclel复杂SQL操作汇总
    mysql查询速度慢的分析和解决
    mysql存储引擎介绍
    mysql数据库函数之left()、right()、substring()、substring_index()
    消息中间件之ActiveMQ
    正则表达式过滤url请求
    http请求常见错误状态码
    Ehcache缓存数据
    eclipse运用经验
    MySQL 触发器trigger
  • 原文地址:https://www.cnblogs.com/wxm422562/p/10887019.html
Copyright © 2020-2023  润新知