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

时间:2017-11-28 14:55:01

标签: python data-structures instance instance-variables

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

在这个关于OOP的视频系列中,Python-youtuber Corey Schafer使用他的Employee类的实例来存储员工的数据,比如他们的工资和他们所知道的编码语言等等。我对“更高级别”的编程很新,并希望在我的一个项目中实现这一点,我还必须存储并随后更改许多类似对象的属性。然而,很快我意识到在构造实例之后处理数据相当麻烦。例如,如何迭代某个类或子类的所有实例,或者查找具有特定属性的特定值的实例?我在这里错过了一些大的东西,还是没有方便的方式来访问这些数据?最后,我最终使用了一个额外的字典,它存储了实例名称和一个标识号,以某种方式能够读取数据,但之后我就可以使用字典了。 那么,类实例的使用是否像这样的数据结构显示在这个youtube系列中,这只是关于如何使用类/实例等的一个不好的例子,还是比视频显示更多呢?我已经阅读了很多关于这个主题的内容,但仍然无法弄清楚为什么你不会首先使用dict,或者为什么基本的内置函数会允许例如很容易获取子类的所有实例。

也许有人可以对这些问题有所了解并解开我的困惑。感谢。

2 个答案:

答案 0 :(得分:1)

您正在寻找的是一个完全不同的主题IMO。通常,您应该能够使用适当的ORM来实现此类行为。我建议你查看Django ORM或SQL炼金术,其中各个数据实体确实是类实例。实例和课程通常用汽车/员工,学生等描述。此描述没有任何问题,您存储数据的方式取决于您。通常,您应该能够将数据存储在列表中并对其进行过滤:

class MyViewController: NSViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let cust1 = Customer(name: "bob", value: 100)
        let cust2 = Customer(name: "cat", value: 200)
        let cust3 = Customer(name: "dog", value: 300)

        var customers = [cust2, cust3, cust1]
        customers.sort()
        print(customers)
    }
}

通常,Python类不会跟踪它们的实例,除非你执行so。所以你能够实现这一点,并且你应该能够存储所有索引的值,但是Python不会为你做那些并且它不是预期的行为。

答案 1 :(得分:0)

感谢您帮助我回答和评论。

https://www.youtube.com/watch?v=Opp9AQ90FHw 这个视频解释了如何使用Python中的dunder函数将列表操作实现到对象中,我认为它对任何对使用类实例存储数据感兴趣的人都有用。