如何使用Python中的类函数创建临时对象?

我正在编写这段代码,需要将对象作为函数中的参数发送。我的问题是其中一个对象需要以其原始值重新启动,但因为我需要从函数返回一个对象。


我不知道如何发送答案并将原始值安全地保存在对象中以供重用。有什么方法可以从类声明本身创建一个对象吗?


import math


class Points(object):

 def __init__(self, x, y, z):

    self.x = x

    self.y = y

    self.z = z



def __sub__(self, no):

    

    no.x = no.x - self.x

    no.y = no.y - self.y

    no.z = no.z - self.z

    

    return(no)


def dot(self, no):

    ans = (self.x * no.x)+(self.y * no.y)+(self.z * no.z)

    return ans


def cross(self, no):

    x = (self.y * no.z)-(self.z * no.y)

    y = (self.x * no.z)-(self.z * no.x)

    z = (self.x * no.y)-(self.y * no.x)

    self.x = x

    self.y = y

    self.z = z

    return(self)

    

def absolute(self):

    return pow((self.x ** 2 + self.y ** 2 + self.z ** 2), 0.5)


if __name__ == '__main__':

points = list()

for i in range(4):

    a = list(map(float, input().split()))

    points.append(a)


a, b, c, d = Points(*points[0]), Points(*points[1]), Points(*points[2]), Points(*points[3])

x = (b - a).cross(c - b)

y = (c - b).cross(d - c)

angle = math.acos(x.dot(y) / (x.absolute() * y.absolute()))


print("%.2f" % math.degrees(angle))

我想做类似的事情:


def function_name(self,other)

  temp.x = self.x + other.x

  temp.y = self.y + other.y

  return temp

这样两个输入对象都会有它们的原始值,但我不知道如何获取该温度。


翻阅古今
浏览 117回答 2
2回答

忽然笑

我得到了我正在寻找的答案。我想要一个对象充当可以存储类变量的容器,但我不知道我可以从其中创建该类的新对象!import mathclass Points(object):    def __init__(self, x, y, z):        self.x=x        self.y=y        self.z=z    def __sub__(self, no):        return  Points((self.x-no.x),(self.y-no.y),(self.z-no.z))    def dot(self, no):        return (self.x*no.x)+(self.y*no.y)+(self.z*no.z)    def cross(self, no):        return Points((self.y*no.z-self.z*no.y),(self.z*no.x-self.x*no.z),(self.x*no.y-self.y*no.x))            def absolute(self):        return pow((self.x ** 2 + self.y ** 2 + self.z ** 2), 0.5)正如您所看到的,使用点(即类 Points 的构造函数),我可以存储任何操作的结果,并将其作为对象返回,同时不更改我的输入对象。

慕村9548890

如果您想要做的是重用已传递给类对象的变量,则只需在语句中__init__或在使用它的函数中复制它即可。例如class Foo:    def __init__(self, my_var1, my_var2):    self.my_var1 = my_var1    self.my_var2 = my_var2  def bar(self):    bar_var1 = self.my_var1    bar_var2 = self.my_var2    bar_var1 = bar_var1 + bar_var2    return bar_var1尽管如此,我对为什么你试图self在cross函数中返回(就像self类参数一样)感到有点困惑,而且你似乎没有在其预期目的中使用它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python