python3中的类如何使用truediv?
How to use truediv for classes in python3?
我有这样的代码:
# Imports
from __future__ import print_function
from __future__ import division
from operator import add,sub,mul,truediv
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
def __sub__(self,other):
return Vector(self.a - other.a, self.b - other.b)
def __mul__(self,other):
return Vector(self.a * other.a, self.b * other.b)
# __div__ does not work when __future__.division is used
def __truediv__(self, other):
return Vector(self.a / other.a, self.b / other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)
print (v1 - v2)
print (v1 * v2)
print (v1 / v2) # Vector(0,-5)
print(2/5) # 0.4
print(2//5) # 0
我期待的是 Vector(0.4, -5 ) 而不是 Vector(0,-5),我该如何实现?
一些有用的链接是:
https://docs.python.org/2/library/operator.html
http://www.tutorialspoint.com/python/python_classes_objects.htm
值正确但打印错误,因为您在此处将结果转换为 int
:
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
# ---^---
您可以将其更改为:
def __str__(self):
return 'Vector ({0}, {1})'.format(self.a, self.b)
这将打印:
Vector (0.4, -5.0)
我有这样的代码:
# Imports
from __future__ import print_function
from __future__ import division
from operator import add,sub,mul,truediv
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
def __sub__(self,other):
return Vector(self.a - other.a, self.b - other.b)
def __mul__(self,other):
return Vector(self.a * other.a, self.b * other.b)
# __div__ does not work when __future__.division is used
def __truediv__(self, other):
return Vector(self.a / other.a, self.b / other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)
print (v1 - v2)
print (v1 * v2)
print (v1 / v2) # Vector(0,-5)
print(2/5) # 0.4
print(2//5) # 0
我期待的是 Vector(0.4, -5 ) 而不是 Vector(0,-5),我该如何实现?
一些有用的链接是:
https://docs.python.org/2/library/operator.html
http://www.tutorialspoint.com/python/python_classes_objects.htm
值正确但打印错误,因为您在此处将结果转换为 int
:
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
# ---^---
您可以将其更改为:
def __str__(self):
return 'Vector ({0}, {1})'.format(self.a, self.b)
这将打印:
Vector (0.4, -5.0)