开发者学堂课程【Python 入门 2020年版:练习2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10411
练习2
传入数据类型也可以是元组类型
代码:
import math
class Pointer(objJect):
def _init__(self, x, y):
self.x =x
self.y = y
class Circle(object) :
def _init__(self, cp, radius): # cp = p , radius = 3
self.cp = cp
self.radius = radius
def get_area(self):
return self.radius **2 *math. pi
def get_length(self):
return self.radius * 2* math.pi
def relationship(self, point):
distance = (point.x - self.cp.x)** 2+ (point.y - self.cp.y)** 2
if distance > self.radius** 2:
print( "在圆外)
elif distance < self.radius** 2:
print( '在圆内')
else:#等于的情况
print("在圆上')
p = Pointer(3,4)
c = circle(p,3)
p1 = Pointer ( 10,10)
c.relationship(p1)
原理为有一个内存,内存里面有数据 p,c,p1,分别将三个数据的地址打印出,代码的实现是 relationship 中的 point.x和 point.y 指向,point 指向了内存中的 P1,point1中有 x:10、y:10的属性,circle 中有 cp:(3,4)、radius:5的属性,除了练习一的传入书局类型,也可以直接在 c = circle(p,3)的 p 位置直接传入元组(3,4),此时相当于将 cp 给到了一个元组(3,4)。
如果在练习一的代码基础上使用元组,需要将 relationship中的 point 指向修改成元组类型(distance = (point.x - self.cp[0])** 2 +(point.y - self.cp[1]) ** 2)。
也可以把 circle 中的 cp 改为 x、y 属性,相应传入的时候改为数值输入, point.x 和 point.y 指向分别为 self.x 和 self.y。写代码可以很灵活,掌握思路是最重要的。