gpt4 book ai didi

Python 向量类

转载 作者:太空狗 更新时间:2023-10-29 22:07:19 26 4
gpt4 key购买 nike

我来自 C# 背景,在这些背景下,这些东西非常容易 — 尝试将其转换为适用于 Maya 的 Python。

必须有更好的方法来做到这一点。基本上,我想创建一个 Vector 类,它只包含 x、y 和 z 坐标,但如果此类返回一个包含所有 3 个坐标的元组,并且您可以通过 x 编辑该元组的值,那将是理想的选择, y 和 z 属性,不知何故。

这就是我目前所拥有的,但是一定有比使用 exec 语句更好的方法来做到这一点,对吗?我讨厌使用 exec 语句。

class Vector(object):
'''Creates a Maya vector/triple, having x, y and z coordinates as float values'''

def __init__(self, x=0, y=0, z=0):
self.x, self.y, self.z = x, y, z

def attrsetter(attr):
def set_float(self, value):
setattr(self, attr, float(value))
return set_float

for xyz in 'xyz':
exec("%s = property(fget=attrgetter('_%s'), fset=attrsetter('_%s'))" % (xyz, xyz, xyz))

最佳答案

如果我没有正确理解你的问题,你想要这样的东西吗?

class Vector(object):

def __init__(self, x=0, y=0, z=0):
self._x, self._y, self._z = x, y, z

def setx(self, x): self._x = float(x)
def sety(self, y): self._y = float(y)
def setz(self, z): self._z = float(z)

x = property(lambda self: float(self._x), setx)
y = property(lambda self: float(self._y), sety)
z = property(lambda self: float(self._z), setz)

这使用 _x、_y 和 _z 来(内部)存储传入值并通过使用 property 公开它们(带 setter/getter 、 setter/getter );我使用 lambda 语句缩写了“getter”。

请注意,在 Python 中,直接在对象本身上操作这些值(比如:x、y、z)是非常普遍的(我想你想确保显式浮点类型转换?)

关于Python 向量类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2401185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com