Vector in python
我正在这个项目中处理Python中的向量。但我对python不太熟悉,不知道如何破解它。说明如下:
"向Vector类添加一个构造函数。构造函数应采用单个参数。如果此参数是int或long或从其中一个派生的类的实例,则将此参数视为向量实例的长度。在这种情况下,构造指定长度的向量,并将每个元素初始化为0.0。如果长度为负,则发出一条带有适当消息的ValueError。如果参数不被认为是长度,那么如果参数是序列(例如列表),那么用向量初始化给定序列的长度和值。如果参数未用作向量的长度,并且不是序列,则使用适当的消息引发typeerror。
接下来,实现
我不知道如何进行类类型检查,也不知道如何根据给定的对象初始化向量。有人能帮我吗?谢谢!
你的老师似乎不"把Python说成一种母语"。;)类的整个概念非常愚蠢;真正的Python程序员直接使用内置序列类型。但是,这种事情对于学术练习来说是正常的,可悲的是…
Add a constructor to the Vector class.
在python中,常见的"这是创建一个新对象的方法,并说明它是什么"的实例,默认情况下,在内部处理,然后通过设置类的新实例应该具有的属性,将子对象传递给类的初始化方法,使其成为一个"合适"的实例。我们称之为方法
The constructor should take a single argument. If this argument is either an int or a long or an instance of a class derived from one of these
这是通过使用内置函数
In this case, construct a Vector of the specified length with each element is initialized to 0.0.
在我们的
当我们检测到泛型参数是带有
If the length is negative, raise a ValueError with an appropriate message.
哦,说得对……在建造仓库之前,我们应该检查一下。一些显而易见的方法基本上会将负数视为零。其他方法可能会引发一个我们无法控制的例外。
If the argument is not considered to be the length, then if the argument is a sequence (such as a list), then initialize with vector with the length and values of the given sequence.
"sequence"是一个更加模糊的概念;列表和元组以及没有"sequence"基类的东西,所以我们不能用
假设我们有一个迭代器,我们可以轻松地创建我们的存储:大多数序列类型(我假设您已经考虑了其中一个类型,并且该类型肯定包括在内)将接受其
Next implement the
__repr__ method to return a string of python code which could be used to initialize the Vector. This string of code should consist of the name of the class followed by an open parenthesis followed by the contents of the vector represented as a list followed by a close parenthesis."
希望这是不言自明的。提示:您应该能够通过使用存储属性自己的
根据作业的不同,这可能是合适的,也可能是不合适的,但是在Python编程中,显式检查参数的类型并基于此更改行为并不常见。只是尝试使用您期望的特性是更正常的(如果需要返回到其他选项,可能会捕获异常)。
在这个特定的例子中,一个普通的python程序员实现了一个需要这样工作的向量,他会尝试使用这个参数,就像它是一个整数/长(提示:如果用一个整数乘以一个列表会发生什么?)要初始化向量,如果它抛出异常,请尝试使用它,就像它是一个序列一样,如果它也失败了,那么您可以抛出一个
这样做的原因是,它使您的类可以使用其他对象类型,这些对象类型不是整数或序列,而是像它们那样工作的。特别是,很难全面检查某个东西是否是"序列",因为可以用作序列的用户定义类不必是任何可以检查的公共类型的实例。例如,Vector类本身就是用来初始化向量的很好的候选者!
但我不确定这是否是你老师期望的答案。如果您还没有了解异常处理,那么您几乎肯定不会使用这种方法,所以请忽略我的帖子。祝你学习顺利!
您可以使用isInstance进行类型检查。
用一个初始化方法完成的类初始化。
祝你的任务好运:-)
关于如何在stackoverflow上检查python中的类型,有很多例子(请参阅我的注释了解最高级的一个)。
要初始化类,请使用
1 2 3 | class Vector(object): def __init__(self, sequence): self._internal_list = list(sequence) |
现在您可以拨打:
1 | my_vector = Vector([1, 2, 3]) |
在
您需要开始的一切都在这里:http://docs.python.org/library/functions.html网站