day23 03 组合的例子
day23 03 组合的例子
一、用到组合的方式,编写一个圆环,并能够计算出它的周长和面积
from math import pi # 从内置函数里面导入pi
# 先定义一个圆类
class Circle:
def __init__(self,r): # 初始化和self的创建,一个圆的属性就是半径
self.r = r # 赋值 def area(self): # 和圆相关的方法,计算圆的面积
return self.r**2 * pi
def perimeter(self): # 和圆相关的方法,计算圆的面积
return 2*pi*self.r # 再定义一个圆环类
class Ring:
def __init__(self,outside_r,inside_r): # 初始化和self的创建,一个圆环的属性外半径和内半径
self.outside_c = Circle(outside_r) # 圆环的外半径通过圆类的半径赋值
self.inside_c = Circle(inside_r) # 圆环的内半径也是通过圆类的半径赋值
def area(self):
return self.outside_c.area() - self.inside_c.area() # 直接引用圆类里面的计算面积的area方法,这里就涉及了组合的方法
def perimeter(self):
return self.outside_c.perimeter() + self.inside_c.perimeter() # 直接引用圆类里面的计算周长的perimeter方法,这里就涉及了组合的方法
ring = Ring(20,10)
print(ring.area()) # 计算圆环的面积
print(ring.perimeter()) # 计算圆环的周长
运行结果:
C:\Users\sku1-1\PycharmProjects\untitled\venv\Scripts\python.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:\Users\sku1-1\PycharmProjects\untitled\venv\Scripts\python.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、组合:至少有两个类,是什么有什么的关系(这两个什么指的都是类),通过一个类去查看另一个类的属性
一个类的对象是另外一个类对象的属性
day23 03 组合的例子的更多相关文章
- day23 02 组合(继续人狗大战游戏)
day23 02 组合(继续人狗大战游戏) 面向对象的三大特性:继承 多态 封装 先讲解一下组合 组合:一个对象的属性值是另一个类的对象:对象.属性.属性(一般有两个点) 继续扩展day22 01里面 ...
- Python Revisited Day 03 (组合数据类型)
目录 第三章 组合数据类型 3.1 序列类型 3.1.1 元组 3.1.2 命名的元组 (collections.nametuple()) 3.1.3 列表 (查询有关函数点这) 3.1.4 列表内涵 ...
- C++代码学习之一:组合模式例子
#include"AbstractFile.h" void AbstractFile::add(AbstractFile*) { } void AbstractFile::remo ...
- .NET设计模式(11):组合模式(Composite Pattern)(转)
概述 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦. 意图 将对 ...
- 输入n个数组,数组长度不等,每个数组取出一个数进行组合,求出所有的组合。
转载声明:原文转自http://www.cnblogs.com/xiezie/p/5511707.html 昨天晚上,有个朋友找到我,他在用matlab编程,但是遇到一个问题,解决不了. 问题如下: ...
- js 继承的简单易懂小例子
js 继承 今天主要说原型链继承.构造继承.组合继承三种常用继承方式,分享一下我的理解. 原型链继承例子1 //原型继承function A(name){ this.name = name;}func ...
- C++添加热键和捕获组合键
一.热键注册 步骤一:声明一个全局量int hotkeyId=1: 步骤二:窗体创建的时候注册: int result= RegisterHotKey(this->GetHWND(), hotk ...
- NET设计模式 第二部分 结构性模式(10):组合模式(Composite Pattern)
组合模式(Composite Pattern) ——.NET设计模式系列之十一 Terrylee,2006年3月 概述 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复 ...
- C++进阶--代码复用 继承vs组合
//############################################################################ /* * 代码复用: 继承 vs 组合 * ...
随机推荐
- layui 单选框选中事件
<div class="layui-form-item" pane=""> <label class="layui-form-lab ...
- Tinghua Data Mining 9
关联规则,营销购物 空缺 协同过滤
- memcpy/memmove?快速乘?
memcpy?memmove? //#pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; ; ],b[n ...
- python之 __getattr__、__getattr__、__getitem__、__setitem__ 使用
python之 __getattr__.__getattr__.__getitem__.__setitem__ 使用 __getattr__内置使用点号获取实例属性属性如 s.name,自调用__ge ...
- js判断网页访问设备类型
有时候我们会需要来根据不同的设备访问进行不同的操作,在网上找了一下,主要是根据Navigator对象, if(/Android|Windows Phone|webOS|iPhone|iPod|Blac ...
- jupyter notebook dead kernel问题解决
背景: 我在刚安装好的tensorflow环境下启动jupyter notebook,无论是浏览器还是控制台,提示都是关于dead kernel.然后就查嘛,更新大发好. 但是我在控制台里按照其他人说 ...
- springmvc当要返回中文字符串时出现乱码
当过滤器,页面编码都对,tomcat版本在8以上(8内部默认用utf-8) 在方法参数中加上,produces="text/html;charset=UTF-8" 绝对可以解决!! ...
- (AOP)理解
AOP的全称: Aspact Oriented Programming AOP的目标(作用):让我们可以“专心做事” 日志记录,事务处理,异常捕获,缓存操作. AOP原理 将复杂的需求分解出不同 ...
- php调用c# webservice方法
第一次用,通过,还没深入了解. 首先在php.ini中启用extension=php_soap.dll,重启apache. $Client=new SoapClient("url?wsdl& ...
- uvm_env——UVM大环境(UVM Environment )
1 What is uvm_env? uvm_env is used to create and connect the uvm_components like driver, monitors , ...