python - 如何打印属于奇异数组的 2 个类变量?
问题描述
我在 Python 中有两个类变量,例如澳大利亚人和美国人,它们具有相同的属性,但是是分开的,所以我可以区分两者。我将它们组合成一个数组以根据年龄对它们进行排序。现在我希望如下所示显示它们,但我正在努力寻找一种方法来做到这一点。我对 Python 脚本很陌生,还在学习。
class Aus(object):
def __init__(self, Name, Age, Height):
self.Name = Name
self.Age = Age
self.Height = Height
class US(object):
def __init__(self, Name, Age, Height):
self.Name = Name
self.Age = Age
self.Height = Height
John = Aus("John", 22, 153)
Steve = Aus("Steve", 15, 180)
Henry = PC("Henry", 20, 192)
Tim = PC("Tim", 85, 160)
Aussies = [John, Steve, Henry, Tim]
Mary = US("Mary", 21, 178)
Sue = US("Sue", 80, 159)
Americans = [Mary, Sue]
Total = Aussies + Americans
Total.sort(key=lambda x: x.Age, reverse=True)
我希望输出是这样的
Tim -> 85 Years/160 cm
Sue -> 80 Years/159 cm
John -> 22 Years/153 cm
Mary -> 21 Years/178 cm
等等
有没有办法做到这一点?
解决方案
一种方法是自己定义__str__
:
请注意,我假设亨利和蒂姆也是Aus
:
class Intro(object):
def __str__(self):
return "%s -> %s Years/%s cm" % (self.Name, self.Age, self.Height)
class Aus(Intro):
def __init__(self, Name, Age, Height):
self.Name = Name
self.Age = Age
self.Height = Height
class US(Intro):
def __init__(self, Name, Age, Height):
self.Name = Name
self.Age = Age
self.Height = Height
John = Aus("John", 22, 153)
Steve = Aus("Steve", 15, 180)
Henry = Aus("Henry", 20, 192)
Tim = Aus("Tim", 85, 160)
Aussies = [John, Steve, Henry, Tim]
Mary = US("Mary", 21, 178)
Sue = US("Sue", 80, 159)
Americans = [Mary, Sue]
Total = Aussies + Americans
然后sorted
使用str
:
[str(s) for s in sorted(Total, key=lambda x:x.Age, reverse=True)]
输出:
['Tim -> 85 Years/160 cm',
'Sue -> 80 Years/159 cm',
'John -> 22 Years/153 cm',
'Mary -> 21 Years/178 cm',
'Henry -> 20 Years/192 cm',
'Steve -> 15 Years/180 cm']
推荐阅读
- c++ - 向量的部分排序
- ios - Xcode 11“'==' 仅适用于 iOS 13.0 或更高版本”错误
- python - 参数写入 elan 文件的多个值
- c# - ComboBox 的事件 comboBox_TextChanged 并不总是触发
- database - 我想要一个独特的领域,当与另一个领域结合在一起时,它不应该是唯一的
- python - 无法使用 subprocess.Popen 方法调用 C++ 二进制文件
- python - 如何根据数据中对象的类型将大型数据集操作为更小的数据集?
- bind - 将 ipv6 slaac 地址绑定到 Windows IP 堆栈错误 10049
- r - 用 2 个循环操纵整个 Row
- mqtt - Mosquitto 经纪人未验证发布者或订阅者发送的用户名和密码