类:在一个函数中与2个类实例交互

时间:2018-03-23 17:52:49

标签: python python-3.x function class

这是我第一次使用python中的类,我很快写了一个简单的类,让你按坐标移动火箭。我不知道如何制作一个名为let' distance" distance"这将返回两个不同实例(火箭)之间的距离。为了清楚起见,我知道如何计算距离,我不知道如何建立一个函数

class Rocket:

    def __init__(self , start = (0, 0)):
        self.start = start
        self.x = self.start[0]
        self.y = self.start[1]
        if not self.crash():
            self.start = (0,0)
            print("You crashed!! Your position has been restarted to (0,0)")

    def __repr__(self):
        return "tbd"

    def get_position(self):
        return "Your curret posiiton is {}".format(self.start)


    def move_side(self,x):
        self.x += x
        self.start = (self.x, self.y)

    def move_up(self,y):
        self.y += y
        self.start = (self.x, self.y)
        if not self.crash():
            self.start = (0,0)
            print("You crashed!! Your position has been restarted to (0,0)")

    def move(self,x,y):
        self.x += x
        self.y += y
        self.start = (self.x,self.y)

    def land_rocket(self):
        self.y = 0
        self.start = (self.x,self.y)

    def crash(self):
        if self.y >= 0:
            return True
        return False

    def distance(self,other):
        return "???"

1 个答案:

答案 0 :(得分:1)

您需要定义一个带有额外参数的类方法,该参数是您想要计算距离的对象。

要应用笛卡尔距离公式,请知道**代表取幂,并且您可以导入math.sqrt作为平方根。

import math

class Rocket:

    ...

    def distance(self, other):
        return math.sqrt((self.x - other.x) ** 2 + (self.y - other.y) ** 2)

上述代码仅要求other拥有xy个属性,它不需要是Rocket个实例。