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