class otherclass:
def __init__(self,instance,town):
list=[]
for i in line.split(','):
list.append(i)
self.firstname = str(list[0])
self.height = int(list[1])
def__str__(self):
return '%s %d' %(self.firstname,self.height)
class xray(list):
def __init__(self, file, town):
self.file=open(file)
line=self.file.readlines()
line1= line[10:]
for g in line:
self.append(otherclass(g,town))
def sort1(self):
#sort function here
所以基本上有三个类,一个是Xray,otherclass和town。 Basiclly otherclass为每个对象创建数据属性,然后xray假定读取文件并为每个项目(每一行)创建一个对象并将其附加到自我列表。然后我必须创建一些函数来对数据进行排序。例如,我必须按高度对每个人进行排序。这是我被困的地方,因为我怎么称它为基于高度的排序?所以基本上当我说x = xray(文件,镇)然后x.sort1()时,它会打印按高度排序的每个人
答案 0 :(得分:1)
好像你正在犯这个错误。类用于对象,而不是将代码组合在一起。模块是将代码组合在一起。这与其他语言(例如Java)的处理方式不同。
然而,按属性排序并不困难。试试这个:
class Dummy(object):
def __init__(self,name,height):
self.name = name
self.height = height
Adam = Dummy("Adam",72)
Steve = Dummy("Steve",71)
user3521527 = Dummy("user3521527",90) # damn you're tall.
dummies = [Adam,Steve,user3521527]
sorted_dummies = sorted(dummies, key = lambda x: x.height)
stdlib sort
函数接受名为kwarg
的{{1}},它接受一个运行排序的函数。在这种情况下,它会遍历key
list
,提取列表中的每个元素,将其分配给dummies
,然后返回x
。它根据x.height
函数的返回值对元素进行排序,因此它们将根据其高度进行排序。
或者,您可以在对象中实现key
。
__cmp__
这告诉Python如何比较该类型的对象,因此常规class Dummy(object):
def __init__(self,name,height):
self.name = name
self.height = height
def __cmp__(self,other):
"""self < other if self.height < other.height"""
if self.height < other.height: return -1
elif self.height == other.height: return 0
elif self.height > other.height: return 1
函数在没有关键参数的情况下工作。
sort