Python有属性吗?
比如:Python有属性吗?,python,Python,比如: vector3.Length import math vector3 = [5, 6, -7] print math.sqrt(vector3[0]**2 + vector3[1]**2 + vector3[2]**2) 这实际上是一个计算向量长度的函数调用,而不是一个变量。如果变量vector3是一个点到原点的三维定向距离,并且您需要它的长度,请使用以下方法: vector3.Length import math vector3 = [5, 6, -7] print math.s
vector3.Length
import math
vector3 = [5, 6, -7]
print math.sqrt(vector3[0]**2 + vector3[1]**2 + vector3[2]**2)
这实际上是一个计算向量长度的函数调用,而不是一个变量。如果变量vector3是一个点到原点的三维定向距离,并且您需要它的长度,请使用以下方法:
vector3.Length
import math
vector3 = [5, 6, -7]
print math.sqrt(vector3[0]**2 + vector3[1]**2 + vector3[2]**2)
如果需要适用于任意数量尺寸的解决方案,请执行以下操作:
import math
vector3 = [5, 6, -7]
print math.sqrt(sum(c ** 2 for c in vector3))
您可以使用Length
属性定义自己的向量类,如下所示:
import math
class Vector3(object):
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
@property
def Length(self):
return math.sqrt(self.x ** 2 + self.y ** 2 + self.z ** 2)
vector3 = Vector3(5, 6, -7)
print vector3.Length
是:对于新样式的类,您可以使用
property()
:。在property()装饰器出现之前,习惯用法是对计算属性使用无参数方法。尽管这可能是为了在新样式类之前启动的库中保持一致性,但这种习惯用法仍然经常优先于装饰器使用。您可以覆盖一些特殊方法来更改属性访问的方式,
请参阅python文档或
但是,这两种方法都会降低对类的任何属性访问速度,因此通常使用属性可能是最好的方法