为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2024-01-24 15:20:49
我正在编写这段代码,需要将对象作为函数中的参数发送。我的问题是其中一个对象需要以其原始值重新启动,但因为我需要从函数返回一个对象。我不知道如何发送答案并将原始值安全地保存在对象中以供重用。有什么方法可以从类声明本身创建一个对象吗?import mathclass Points(object): def __init__(self, x, y, z):    self.x = x    self.y = y    self.z = zdef __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 ansdef 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这样两个输入对象都会有它们的原始值,但我不知道如何获取该温度。
查看完整描述

2 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

我得到了我正在寻找的答案。我想要一个对象充当可以存储类变量的容器,但我不知道我可以从其中创建该类的新对象!


import math

class 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 的构造函数),我可以存储任何操作的结果,并将其作为对象返回,同时不更改我的输入对象。


查看完整回答
反对 回复 2024-01-24
?
慕村9548890

TA贡献1884条经验 获得超4个赞

如果您想要做的是重用已传递给类对象的变量,则只需在语句中__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

尽管如此,我对为什么你试图selfcross函数中返回(就像self类参数一样)感到有点困惑,而且你似乎没有在其预期目的中使用它。


查看完整回答
反对 回复 2024-01-24
  • 2 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信