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文档或

但是,这两种方法都会降低对类的任何属性访问速度,因此通常使用属性可能是最好的方法