这应该更接近您想要的:class Crime(object):
def __init__(self, id_jenis, jenis):
self.id_jenis=id_jenis
self.jenis=jenis
class DistanceNeighbor(object):
def __init__(self, distance, crimes):
self.distance = distance
self.crimes = crimes
data_distance = []
for id_objek1, objek1, id_objek2, objek2, distance in cur.fetchall():
crimes = [Crime(id_objek1,objek1), Crime(id_objek2,objek2)]
data_distance.append(DistanceNeighbor(distance, crimes))
python2中的类应该始终从object继承。按照惯例,类名使用CamelCase。在
{{cd2}的继承似乎是不必要的。我改了这个。在
实例的属性应该是小写的,因此我使用了crimes,而不是重用类名Crime。在
这条线:
^{pr2}$
将Crime实例列表作为单独的参数分开。
在您的例子中,这意味着__init__接收到:distance, data_Crime[0], data_Crime[0]
此错误导致:TypeError: init() takes exactly 2 arguments (3 given)
Crime的实例化非常短。因此,您可以在一行中创建两个Crime实例的列表,而不是两个appends:crimes = [Crime(id_objek1,objek1), Crime(id_objek2,objek2)]
因为这会在每个循环中创建一个新列表,所以不需要像处理del data_Crime[:]那样删除每个循环中的列表内容。在