类实例作为python中的数据结构

2024-09-30 22:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

https://www.youtube.com/watch?v=ZDa-Z5JzLYM&list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc

在这个关于OOP的视频系列中,Python youtuber Corey Schafer使用他的Employee类实例来存储关于员工的数据,比如他们的工资和他们知道的编码语言等。我对“更高级别”编程相当陌生,希望在我的一个项目中实现这一点,我还必须存储并随后更改属性许多相似的物体。然而,很快我就意识到,在实例构建之后处理数据是相当麻烦的。例如,我如何迭代某个类或子类的所有实例,或者找到对某个特定属性具有特定值的实例?我是不是遗漏了一些重要的东西,或者真的没有方便的方法来访问数据?最后,我最终使用了一个额外的字典来存储实例名和标识符号,以便能够以某种方式读取数据,但是首先我可以使用字典。 那么,使用类实例作为数据结构,就像在youtube系列中所展示的那样,只是一个关于如何使用类/实例等的坏例子,还是比视频显示的更多?我已经读了很多关于这个主题的文章,但是仍然不明白为什么你一开始就不使用dict,或者为什么缺少一些基本的内置函数,比如可以轻松获取子类的所有实例。在

也许有人能对这些问题有所了解,解开我的困惑。谢谢。在


Tags: 数据实例httpscom视频字典属性youtube
2条回答

在我看来,你要找的是一个完全不同的主题。一般来说,你应该能够用一个恰当的ORM来实现这样的行为。我建议您研究一下Django ORM或SQL炼金术,其中单个数据实体实际上是类实例。实例和类通常是用汽车/雇员、学生等来描述的。这种描述没有什么错,你存储数据的方式由你决定。通常,您应该能够将数据存储在列表中并对其进行筛选:

employees = [
    Emplyee(...),
    Emplyee(...),
    Emplyee(...),
    ...
]

employees_with_high_salary = [e for e in employees if e.salary > 400]

一般来说,Python类不会跟踪它们的实例,除非so。因此,您能够实现这一点,并且应该能够存储索引的所有值,但是Python不会为您这样做,而且这不是预期的行为。在

谢谢你的回答和评论。在

https://www.youtube.com/watch?v=Opp9AQ90FHw 这段视频解释了如何在Python中用dunder函数将列表操作实现到对象中,我想这对任何有兴趣使用类实例来存储数据的人来说可能会很有用。在

相关问题 更多 >