The __round__
special method was only introduced in Python 3. There is no support for the special method in Python 2.
You'll have to use a dedicated method instead of the function:
class Vector(object):
def __init__(self, value):
self.value = value
def round(self, n):
return [round(x, n) for x in self.value]
or you'd have to provide your own round()
function:
import __builtin__
def round(number, digits=0):
try:
return number.__round__(digits)
except AttributeError:
return __builtin__.round(number, digits)
You could even monkey-patch this into the __builtins__
namespace:
import __builtin__
_bltin_round = __builtin__.round
def round(number, digits=0):
try:
hook = number.__round__
except AttributeError:
return _bltin_round(number, digits)
else:
# Call hook outside the exception handler so an AttributeError
# thrown by its implementation is not masked
return hook(digits)
__builtin__.round = round
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…