Python類練習 定義一個類 列印Point: Point實例化為一個p1: 我們直接列印 結果為 __main__.Point` 給實例p1添加屬性 (3, 4) 原點(0, 0)與p1之間的距離:5.0 (3, 4) 定義矩形 實例化一個例子r1 (100, 200) 列印矩形的寬度width ...
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)