各位大神好!

我在学习的一个线代基础课中,需要用到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)) 该怎么理解好呢?

请大神赐教,谢谢!

python类中的函数_python类中的函数问题相关推荐

  1. python如何定义自定义函数_python类中系统自定义函数

    标签: python类 双下划线特殊函数 今天遇到python类内部系统以双下划线开头和结尾的情况,特去学习一部分的应用情况,顺便记录一下.python 的OOP编程中,每个类拥有一些系统特殊定义的函 ...

  2. python 类函数调用外部函数_python类中调用外部函数,python 函数中 定义类

    Q1:python函数里的数组如何在函数外调用出来 使用返回值的方法有两种: 可以直接把调用的函数作为变量使用 可以用调用函数给一个变量赋值 第一种情况见如下例子: l = [1,2,3,4,5] d ...

  3. python类中最大的_python类的学习笔记(一)

    python中一切皆对象,类型的本质就是类. 在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是'类',对象是则是这一类事物中具体的一个. 声明函数的方法: def ...

  4. python类初始化详解_python类中super() 的使用解析

    描述 super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重复 ...

  5. python中help函数_Python help()函数

    python中help函数 Python help() function is used to get the documentation of specified module, class, fu ...

  6. python语言中有哪些函数_Python语言中的函数

    本文主要向大家介绍了Python语言中的函数,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数 ...

  7. python中常见的内置函数_python常用内置函数

    内置函数(***) 1.print() 屏幕输出. ''' 源码分析 def print(self, *args, sep=' ', end='\n', file=None): # known spe ...

  8. python解码函数_Python字符串中的两个解码与解码函数详解

    Python字符串作为计算机语言中被广泛应用的语言.很少有人知道Python字符串中有两个编码和解码的函数.以下是文章的介绍,希望你能从以下的文章中会有所收获,下面是文章的介绍. Python字符串, ...

  9. python类定义的讲解_python类定义的讲解

    Python中的类属性和对象属性的区别详解 类属性: class Employee(object): emCount=0 def __init__(self,name,salary): self.na ...

  10. python类的私有属性_Python类的私有属性

    在 C++ 和 Java 中,属性(成员)有访问控制,如 public 表示任意代码可以访问该属性,private 表示仅当前类的代码才可以访问该属性. Python 中没有这个访问控制符,但是可以在 ...

最新文章

  1. 综合布线工作组2008年上半年技术课题工作安排会议通知
  2. Nutch URL过滤配置规则
  3. Linux 用户和用户操作
  4. PHP文件头部(header)解释
  5. [禅悟人生]拿得起放得下, 才是真幸福
  6. 淘宝内部分享:MySQL MariaDB性能优化
  7. BootStrap中对input的type自带的验证种类
  8. linux 脚本中除法运算符,Linux中Shell的算数运算符和位运算符用法笔记
  9. Hawtio和Apache JClouds
  10. 多个Tomcat同时运行环境配置 - imsoft.cnblogs
  11. Android中的数据编码,Android与服务端数据传输的编码处理
  12. mysql 快速还原数据库_快速入门:备份和还原MySQL数据库的简便方法
  13. 微信管理系统-联络易
  14. MTK芯片资料分享,2018MTK芯片资料大全
  15. 网页游戏外挂的设计与编写:QQ摩天大楼【二】(登陆准备-信息处理方式)
  16. aidlearning开发python使用教程_极致安卓之—Aid Learning基于Jupyter开发Java和Python
  17. wp8.1 java_UWP tips (与wp8.1的不同)
  18. 倾斜摄影超大场景的三维模型的顶层合并常见的问题分析
  19. echarts中对整个图形旋转90°(实现div旋转90度)
  20. [MySQL] 零基础学MySQL 04

热门文章

  1. html制作手机预览效果,新移动端Html5方式预览报表插件
  2. 【windows】python安装小结
  3. What?Java这么神奇的lambda表达式
  4. python提供了_Python中 为我们提供了一些独特的解决方案的方法特性
  5. signal.h 中的宏定义 SIG_DFL 及 SIG_IGN
  6. Keil uVision2 简介
  7. 简述:B2B、B2C、C2C、O2O
  8. mysql的二级分区_分布式数据库一级分区和二级分区
  9. for oracle中pivot_Oracle PIVOT 行转列方法
  10. 鬼泣4计算机丢失xinput,Win7系统运行游戏报错“计算机丢失XINPUT1-3.dll”