欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程语言 > python >内容正文

python

python类中的函数-凯发ag旗舰厅登录网址下载

发布时间:2024/10/8 python 0 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 python类中的函数_python类中的函数问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

各位大神好!

我在学习的一个线代基础课中,需要用到python来计算向量,其中有一段代码是这样的:

from math import sqrt, acos, pi #导入sqrt, acos, pi

from decimal import decimal, getcontext

getcontext().prec = 30

class vector():

cannot_normalize_zero_vector_msg = 'cannot normalize the zero vector'

def __init__(self, coordinates):

try:

if not coordinates:

raise valueerror

self.coordinates = tuple([decimal(x) for x in coordinates])

self.dimension = len(self.coordinates)

except valueerror:

raise valueerror('the coordinates must be nonempty')

except typeerror:

raise typeerror('the coordinates must be an iterable')

def plus(self, v):

"""向量加法"""

new_coordinates = [x y for x, y in zip(self.coordinates, v.coordinates)]

return vector(new_coordinates)

def dot(self, v):

"""计算向量点积"""

return sum([x * y for x, y in zip(self.coordinates, v.coordinates)])

def angle_with(self, v, in_degrees = false):

"""计算向量夹角"""

try:

u1 = self.normalized()

u2 = v.normalized()

angle_in_radians = acos(u1.dot(u2))

if in_degrees:

degrees_per_radian = 180. / pi

return angle_in_radians * degrees_per_radian

else:

return angle_in_radians

except exception as e:

if str(e) == self.cannot_normalize_zero_vector_msg:

raise exception('cannot compute an angle with the zero vector')

else:

raise e

print('\n向量加法')

v = vector([8.218, -9.341])

w = vector([-1.129, 2.111])

print(v.plus(w))

print('\n计算向量夹角')

v = vector(['3.183', '-7.627'])

w = vector(['-2.668', '5.319'])

print(v.angle_with(w))

v = vector(['7.35', '0.221', '5.188'])

w = vector(['2.751', '8.259', '3.985'])

print(v.angle_with(w, in_degrees=true))

在向量加法的代码中,这个 self.coordinates 是 v = vector([8.218, -9.341]) 传入的值,v.coordinates 是 w = vector([-1.129, 2.111]) 传入的值,我有个问题就是,为什么 v 后面要加上coordinates 呢?这个 v 是类似 self 那样作为引用,用于访问这个属性 coordinates 吗?为什么不可以直接使用 v 呢?

另外在“计算夹角向量”的代码中:

angle_in_radians = acos(u1.dot(u2))

中的 (u1.dot(u2)) 该怎么理解好呢?

请大神赐教,谢谢!

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的python类中的函数_python类中的函数问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图