gpt4 book ai didi

python - 为什么在打印向量时隐式调用 str(vector)?

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:08 30 4
gpt4 key购买 nike

本段下方的所有内容均来自《实用 Maya 编程》一书。在倒数第二行中,作者说带有参数 tprint 语句隐式调用 str(t),我想知道为什么,同样在第二个代码块中,作者创建了 vect 并将其分配给值 xform.translate.get(),难道他不能继续使用 t 也分配给了 xform.translate.get()

>>> xform.translate
Attribute(u'pSphere1.translate')
>>> t = xform.translate.get()
>>> print t
[0.0, 0.0, 0.0]

突出显示的球体变换的平移值似乎是一个列表。它不是。翻译值是 pymel.core.datatypes.Vector 的一个实例。有时我们需要更积极地内省(introspection)对象。我认为这是 PyMEL 犯错误的少数领域之一。调用 str(t) 会返回一个看起来像是来自列表的字符串,而不是看起来像是来自 Vector 的字符串。确保你有正确的类型。我花了几个小时来寻找我使用 Vector 而不是列表的错误,反之亦然。

>>> vect = xform.translate.get()
>>> lst = [0.0, 0.0, 0.0]
>>> str(vect)
'[0.0, 0.0, 0.0]'
>>> str(lst)
'[0.0, 0.0, 0.0]'
>>> print t, lst # The print implicitly calls str(t)
[0.0, 0.0, 0.0] [0.0, 0.0, 0.0]

最佳答案

那是因为 Python 的数据模型。根据docs :

object.__str__(self) Called by str(object) and the built-in functions format() and print() to compute the “informal” or nicely printable string representation of an object. The return value must be a string object.

This method differs from object.__repr__() in that there is no expectation that __str__() return a valid Python expression: a more convenient or concise representation can be used.

The default implementation defined by the built-in type object calls object.__repr__().

如您所见,Python 的 print(object) 在内部调用 object.__str__() 返回对象的字符串表示形式。调用 str(object) 也会返回 object.__str__()

由于这个事实,print(object)str(object) 都会为您提供相同的视觉输出。

关于python - 为什么在打印向量时隐式调用 str(vector)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117072/

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