python - 返回满足条件的类的所有实例

标签 python

我是 Python 的新手,所以我可能没有以正确的方式提出这个问题,我试图找到答案(显然没有成功)。

我正在尝试设置一个类,然后找到该类的所有符合特定条件的实例。我不知道上课是否是解决这个问题的正确方法,所以对所有建议都持开放态度(即使这让我无法上课)。

举一个简单的例子(见下面的代码),如果我想找到所有超过 30 岁的员工,正确的方法是创建一个类方法吗?实际上,您拥有 DOB 而不是年龄,但为了简单起见,我已经随着年龄的增长而消失了。我还想要某种变量,以便我可以将 30 更改为 50。

class Employee:
  def __init__(self, name, age):
    self.name = name
    self.age = age

e1 = Employee("John", 36)
e2 = Employee("Sally", 21)
e3 = Employee("Jamie", 53)

实现此目标的“正确”方法或有效方法是什么?对于上面这个年龄在 30 岁以上的例子,我想要 e1 和 e3 实例。任何帮助将不胜感激!

最佳答案

您通常会将您的实例放在某种集合中,例如列表,而不是单个变量。然后,您可以过滤您的列表或使用列表理解来获取您想要的列表中的元素。这是一个列表理解的例子:

class Employee:
    def __init__(self, name, age):
        self.name = name
        self.age = age

employees = [
    Employee("John", 36),
    Employee("Sally", 21),
    Employee("Jamie", 53)
]

over_thirty = [e for e in employees if e.age > 30]

for e in over_thirty:
    print(e.name)

打印:

John
Jamie

您可以避免使用额外的列表 over_thirty 并直接遍历筛选结果以获得相同的结果:

for e in filter(lambda e: e.age > 30, employees):
    print(e.name)

关于python - 返回满足条件的类的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57033104/

相关文章:

python - 类型错误 : unhashable type

python - 正则表达式限制模式中字符的数量

python - Python制作命名空间包的方法

python - 为什么我没有从列表理解检查真值中获得索引返回?

python - PyOpenSSL:获取 CRL 的上次更新和下一次更新字段

python - 使用用户输入在列表中查找和替换(python)

python - 初学Python 3--os.path和WinError 2

python - 在特定条件下从字符串中提取数字

python - spark 2.1.0 session 配置设置 (pyspark)

python - 为什么 Python 处理 '1 is 1**2' 与 '1000 is 10**3' 不同?