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>

我们直接打印Point结果为<class '__main__.Point'>,即Point的全名为__main__.Point

给实例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

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
打印矩形的长度height:500.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
打印矩形的长度height:600.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. Python 操作集合

    Python 操作集合 集合,set,主要用于数据的关系测试和去重处理,和列表类似,可以存储数据,列表中可以存储重复的数据,但是如果转化为集合之后,数据就会进行去重,然后保留唯一值:关系测试就是求多个 ...

  2. ubuntu:基本操作;

    1.系统时间与网络时间同步: sudo dpkg-reconfigure tzdata 注: 该博文为扩展型:

  3. Docker:手动制作镜像 [五]

    一.制作docker镜像的步骤 1.启动容器安装软件服务 2.将安装好服务的容器commit提交为镜像 3:.启动新容器来测试新提交的镜像 二.制作支持ssh远程登录的docker镜像 1.启动容器安 ...

  4. java集合框架综述

    一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和 ...

  5. crm 权限设计

    先在项目中创建  app rbac的models.py from django.db import models class Permission(models.Model): "" ...

  6. Shiro 系列: 简单命令行程序示例

    在本示例中, 使用 INI 文件来定义用户和角色. 首先学习一下 INI 文件的规范. =======================Shiro INI 的基本规范================== ...

  7. Shiro 系列 - 基本知识

    和 Spring Security 项目一样, Apache Shiro 也是一个被广泛使用安全框架, 它们都能完成认证.授权.会话管理等. 简单对比一下 Apache Shiro 和 Spring ...

  8. Elasticsearch6.3.2启动过程源码阅读记录

    Elasticsearch6.3.2启动过程源码阅读记录 网上有很多关于es的源码分析,觉得自己技术深度还不够,所以这些文章只是看源码过程中的一个笔记,谈不上分析. 整个启动过程以类名.方法名,按顺序 ...

  9. mysql常见的问题

    1.为什么选择某一个版本 各个版本之间的区别及优缺点 首先,服务器特性 mysql percona mysql mariaDB 开源 开源 开源 支持分区表 支持分区表 支持分区表 innodb Xt ...

  10. 新加坡100M带宽,国内延迟70ms,仅800元

    ▇ 新加坡100M带宽,延迟80msE3_8G_1TB_100M_5IP_800元促:E3_32G_1TB SSD_1200元 ▇ 马来西亚,独享带宽,延迟70msL5630_16G_1TB_15M_ ...