更新
This commit is contained in:
73
Python-100-Days/Day01-15/Day09/association.py
Normal file
73
Python-100-Days/Day01-15/Day09/association.py
Normal file
@@ -0,0 +1,73 @@
|
||||
"""
|
||||
|
||||
对象之间的关联关系
|
||||
|
||||
Version: 0.1
|
||||
Author: 骆昊
|
||||
Date: 2018-03-12
|
||||
|
||||
"""
|
||||
|
||||
from math import sqrt
|
||||
|
||||
|
||||
class Point(object):
|
||||
|
||||
def __init__(self, x=0, y=0):
|
||||
self._x = x
|
||||
self._y = y
|
||||
|
||||
def move_to(self, x, y):
|
||||
self._x = x
|
||||
self._y = y
|
||||
|
||||
def move_by(self, dx, dy):
|
||||
self._x += dx
|
||||
self._y += dy
|
||||
|
||||
def distance_to(self, other):
|
||||
dx = self._x - other._x
|
||||
dy = self._y - other._y
|
||||
return sqrt(dx ** 2 + dy ** 2)
|
||||
|
||||
def __str__(self):
|
||||
return '(%s, %s)' % (str(self._x), str(self._y))
|
||||
|
||||
|
||||
class Line(object):
|
||||
|
||||
def __init__(self, start=Point(0, 0), end=Point(0, 0)):
|
||||
self._start = start
|
||||
self._end = end
|
||||
|
||||
@property
|
||||
def start(self):
|
||||
return self._start
|
||||
|
||||
@start.setter
|
||||
def start(self, start):
|
||||
self._start = start
|
||||
|
||||
@property
|
||||
def end(self):
|
||||
return self.end
|
||||
|
||||
@end.setter
|
||||
def end(self, end):
|
||||
self._end = end
|
||||
|
||||
@property
|
||||
def length(self):
|
||||
return self._start.distance_to(self._end)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
p1 = Point(3, 5)
|
||||
print(p1)
|
||||
p2 = Point(-2, -1.5)
|
||||
print(p2)
|
||||
line = Line(p1, p2)
|
||||
print(line.length)
|
||||
line.start.move_to(2, 1)
|
||||
line.end = Point(1, 2)
|
||||
print(line.length)
|
||||
Reference in New Issue
Block a user