## Python类练习

### 定义一个类

``````class Point:
'''二维坐标系中代表一个点'''
pass
``````
``````print('打印Point：{}'.format(Point))
p1 = Point()
print('Point实例化为一个p1：{}'.format(p1))
``````
``````打印Point：<class '__main__.Point'>
Point实例化为一个p1：<__main__.Point object at 0x0000029C80C8D630>
``````

### 给实例p1添加属性

``````p1.x = 3.0
p1.y = 4.0
print('(%g, %g)' % (p1.x, p1.y))
``````
``````(3, 4)
``````
``````import math
distance02p1 = math.sqrt((p1.x - 0)**2 + (p1.y - 0)**2)
print('原点(0, 0)与p1之间的距离：{}'.format(distance02p1))
``````
``````原点(0, 0)与p1之间的距离：5.0
``````
``````def print_point(p):
print('(%g, %g)' % (p.x, p.y))
print_point(p1)
``````
``````(3, 4)
``````

### 定义矩形

``````class Rectangle:
'''代表一个矩形，矩阵属性有长度height、宽度width、角点corner'''
pass

r1 = Rectangle()
r1.width = 200.0
r1.height = 400.0
r1.corner = Point()
r1.corner.x = 0
r1.corner.y = 0
``````

``````r1--->Rectangle---width

------------------height

------------------corner--->Point---x, y
``````
``````# 定义一个矩形中心函数

def center_rect(r):
p = Point()
p.x = r.corner.x + r.width/2.0
p.y = r.corner.y + r.height/2.0
return p

center = center_rect(r1)
print_point(center)
``````
``````(100, 200)
``````
``````r1.width = r1.width + 50
r1.height = r1.height + 100
print('打印矩形的宽度width：{}'.format(r1.width))
print('打印矩形的长度height：{}'.format(r1.height))
``````
``````打印矩形的宽度width：250.0

``````
``````# 定义矩形宽度和高度变化的函数

def change_rect(rect, dwidth, dheight):
rect.width += dwidth
rect.height += dheight

change_rect(r1, 50, 100)
print('打印矩形的宽度width：{}'.format(r1.width))
print('打印矩形的长度height：{}'.format(r1.height))
``````
``````打印矩形的宽度width：300.0

``````
``````# def move_rect(rect, dx, dy):
#     p = center_rect(rect)
#     p.x += dx
#     p.y += dy
#     return p
# 结果： (155, 305)

# 定义一个矩形移动函数

def move_rect(rect, dx, dy):
p = Point()
p.x = rect.corner.x + dx
p.y = rect.corner.y + dy
return p

print_point(move_rect(r1, 5, 5))
``````
``(5, 5)``

## Python3面向对象—点和矩形类的更多相关文章

1. python022 Python3 面向对象

Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触 ...

2. [.net 面向对象编程基础] (9) 类和类的实例

[.net 面向对象编程基础] (9) 类和类的实例 类 ,顾名思义就是分类.类别的意思.我们要面向对象编程,就需要对不同的事物进行分类.类可以说是.net面向对象的核心. 类:就是具有相同的属性和功 ...

3. [.net 面向对象编程基础] (10) 类的成员（字段、属性、方法）

[.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...

4. YTU 2602: 熟悉题型——类设计（ 矩形类定义【C++】）

2602: 熟悉题型--类设计( 矩形类定义[C++]) 时间限制: 1 Sec  内存限制: 128 MB 提交: 183  解决: 119 题目描述 定义一个矩形类,数据成员包括左下角和右上角坐标 ...

5. 矩形类定义【C++】

Description 定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数.输入坐标的函数,以及计算并输出矩形面积的函数.要求使用提示中给出的测试函数并不得改动. Inp ...

6. python 面向对象进阶之元类metaclass

一:知识储备 exec exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定,默认为local ...

7. Lua面向对象之二：类继承

1.类继承 ①代码 Sharp = { } --① 父类 function Sharp:new() local new_sharp = { } self.__index = self --②,self ...

8. js面向对象设计之class类

class 相对 function 是后出来的,既然 class 出来了,显然是为了解决 function 在处理面向对象设计中的缺陷而来.下面通过对比,来看看 class 作为 ES6 中的重大升级 ...

9. js面向对象设计之function类

本文仅探讨如何合理的使用 function 在 javascript中实现一个面向对象设计的类.总所周知,javascript 并不能实现一个真正意义上的类,比如 protect 比如 函数重载.下面 ...

## 随机推荐

1. How To Search and Restore files from Site Collection Recycle Bin

\$sitecoll = Get-SPSite "http://wheresmydoc.findit.com" \$sitecoll.RecycleBin | ?{\$_.Title - ...

2. [转]Java 8：不要再用循环了

以下内容为转载,没有在jdk8中测试,具体业务场景是否存在BUG或使用需要注意的地方有待测试. ------------------分割线---------------------- 正如我之前所写的 ...

3. Java 第二天

1.不带访问修饰符号的类成员变量默认是friendly(可以同一个包中访问) 2.protected的类成员可以在同一个包及其子类中访问 3.方法中可以定义内部类(如下面的代码),该类只能访问方法中的 ...

4. 使用Java高速实现进度条

基于有人问到如何做进度条,以下给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax. ...

5. Javascript实战开发：教你使用raphael.js绘制中国地图

最近的数据统计项目中要用到中国地图,也就是在地图上动态的显示某个时间段某个省份地区的统计数据,我们不需要flash,仅仅依靠raphael.js以及SVG图像就可以完成地图的交互操作.在本文中,我给大 ...

6. 在不用Promise的情况下如何控制异步请求？

如何更好的控制异步请求?相信大家一定首选Promise对象.确实,使用Promise控制异步请求确实非常方便,直接使用then()方法就可以实现当一个异步请求完成后再处理另一个请求或操作.同时,这样的 ...

7. PHP的异常处理机制

1.PHP中异常的独特性 PHP中的异常的独特性,即PHP中的异常不同于主流语言C++.java中的异常.在Java中,异常是唯一的错误报告方式,而在PHP中却不是这样,而是把所有不正常的情况都视作了 ...

8. Django-website 程序案例系列-4 ORM数据库操作

数据库表的创建: 使用mysql时注意,在setting.py中的设置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql' ...

9. Python学习-4.Python的模块加载（二）

1.部分函数加载 from SameFolder import printSameFolder printSameFolder() 该代码指从SameFolder.py中加载printSameFold ...

10. NOIP2012 提高组 Day 1

期望得分:100+100+70=270 实际得分:100+50+70=220 T2 没有底 最后剩余时间来不及打高精.思路出现错误 T1 Vigenère 密码 题目描述 16 世纪法国外交家 Bla ...