我用行AB = Vector2.from_points(A, B)
但是TypeError: object() takes no parameters
在AB = Vector2.from_points(A,B)
并在线return Vector2(cls, P2[0]-P1[0], P2[1]-P1[1])
所以我想这本书可能是错的(我正在看书中的例子)。我从def from_points语句中减去Vector2和cls,以便......
新行如下所示:return (P2[0]-P1[0], P2[1]-P1[1])
当我这样做时,接收来自def from_points的矢量值也等于(5,10)
然后python出错:
print AB.get_magnitude()
AttributeError: 'tuple' object has no attribute 'get_magnitude'
因此,如果没有与Vector2和cls相关的代码,程序将不会将AB作为类对象读取,但似乎我没有将其格式化,因此它不会通过。
我已经坚持了好几天。
#Vector Test
import math
class Vector2(object):
def _init_(self, x=0.0,y=0.0):
self.x = x
self.y = y
def _str_(self):
return"(%s,%s)"%(self.x,self.y)
@classmethod
def from_points(cls, P1, P2):
return Vector2(cls, P2[0]-P1[0],P2[1]-P1[1])
def get_magnitude(self):
return math.sqrt(self.x**2 + self.y**2)
A = (15.0, 20.0)
B = (20.0, 30.0)
AB = Vector2.from_points(A, B)
print AB
print AB.get_magnitude()
更改代码:
#Vector Test
import math
class Vector2(object):
def _init_(self, x=0.0,y=0.0):
self.x = x
self.y = y
def _str_(self):
return"(%s,%s)"%(self.x,self.y)
@classmethod
def from_points(cls, P1, P2):
return (P2[0]-P1[0],P2[1]-P1[1])
def get_magnitude(self):
return math.sqrt(self.x**2 + self.y**2)
A = (15.0, 20.0)
B = (20.0, 30.0)
AB = Vector2.from_points(A, B)
print AB
print AB.get_magnitude()
答案 0 :(得分:0)
那可能是你的意思。
key_value={"a":"test a","b":"test b updated"}
key_value.each do |k,v|
{
k=>v+"extra"
#or
k=>(v=method(v))
#trying to add some extra values or by changing v value calling some method
}
end