基于以下Python代码段,我想问一下在循环或if语句中创建类实例是否是一个好策略。我是OOP概念的新手,尽管我在很大程度上理解它,但我不知道这样的东西是否是以编程方式接受和正确的。
一些程序员告诉我,我不应该在循环中实例化一个类。这样的事情会影响我的程序的效率和记忆吗?你有什么看法?
station = ['one','two'...]
for station in stations_names:
f = open('respond.txt','r')
## Instantiate class: ClassXmlString
xmlStr = ClassXML.XML(f,station)
stations_arr = xmlStr.xmlToString()
答案 0 :(得分:7)
在循环中创建对象绝对没问题。
根据您运行的平台的速度以及您正在编写的实际程序,这可能需要注意,因为对象的实例化可能是“昂贵的”操作。但是,“成本”实际上是非常小的,并且为此开始更改代码将是“过早优化”的典型示例。
以对您有意义的方式编写代码。一旦你的项目完成,如果它的运行速度比你想要的慢,你可以分析并找到导致它运行缓慢的原因。通常,这是I / O(数据库调用,读取/写入硬盘驱动器或网络等)而不是对象实例化。
答案 1 :(得分:2)
使用循环来简化重复性任务。
通常,使用循环来实例化对象是个好主意,特别是如果它们要存储在数组中。
此外,不要担心OOP或优化,关注意图和要求,并且从你在帖子中所说的,很难说你为什么担心这个。
总的来说,是的,如果你需要一个类的很多实例,你应该使用一个循环并将它们存储在一个数组中,但请记住,OOP是一种手段,而不是目标,如果看起来不对,你需要检查它是否符合要求,因为大多数OOP概念被初学者大大滥用(通常为了做OOP而做OOP会导致各种问题)。