這將「字符串長度」功能添加到浮點數。對象上的len()給出數字的長度,就像它是一個字符串一樣
class mynumber(float):
def __len__(self):
return len(self.__str__())
pass
a=mynumber(13.7)
b=mynumber(13.7000001)
print len(a)
print len(b)
對python 2.7進行了測試。希望這可以幫助
這是根據您的評論的不同答案。它設置了一個對象,它有兩個座標對,然後使用半正矢(Haversine Formula in Python (Bearing and Distance between two GPS points))的公式來找到他們模棱兩可
from math import radians, cos, sin, asin, sqrt
class mypointpair(object):
def __init__(self):
self.coord=[]
pass
def add_coords(self,a,b):
self.coord.append((a,b))
def __len__(self):
return self.haversine(self.coord[0][0], self.coord[0][1], self.coord[1][0], self.coord[1][1])
def haversine(self,lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
km = 6367 * c
return km
pp1=mypointpair()
pp1.add_coords(53.32055555555556 , -1.7297222222222221)
pp1.add_coords(53.31861111111111, -1.6997222222222223)
print len(pp1)
我認爲在這種情況下,你應該只是定義另一個函數的距離。 – Kabie
'__len__'應該返回對象的長度(假定它是某種類型的集合)。如果你需要依靠'__len__'來實現真實感,定義你自己的'len'方法(或'length'屬性),然後使用'__nonzero__' /'__bool__'。 – Blender
我同意@ kabie ......一個數字的「len」沒有意義。內建的'int'使用'bit_length()'作爲例子,它讀取的是什麼意思 –