哪个最好?在Python中使用对象的最佳方式?
方法1
object = Object()
object.method()
方法2
Object().method()
这是另一个类内使用,所以我醚设置中的所有需要作为该类的属性的对象(第一方法)还是只使用第二种方法访问它们?
使用每种方法的原因是什么(如果有的话)。
哪个最好?在Python中使用对象的最佳方式?
方法1
object = Object()
object.method()
方法2
Object().method()
这是另一个类内使用,所以我醚设置中的所有需要作为该类的属性的对象(第一方法)还是只使用第二种方法访问它们?
使用每种方法的原因是什么(如果有的话)。
第一种方法是通常的方法。由于实例化的对象绑定到一个变量,它可以在以后使用。顺便说一句,你可能是指object.method(),而不是object.method(圆括号用于实际调用方法)。
方法2不绑定实例,所以它不再可寻址,可能会在稍后进行垃圾回收。只有在调用方法后不必使用实例时才使用方法2。
“可能是垃圾收集后”是误导。至少在cPython中,它会*立即被删除而不需要垃圾收集,因为它的引用计数是0. – geoffspear 2013-03-12 13:38:36
@Wooble - 虽然你说得对,但我不确定其他python实现是否也这样做。我们需要谨慎对待'cPython'作为* only * python。我当然可以看到其他实现正在获得牵引力... – mgilson 2013-03-12 13:44:02
如果我在多行访问对象,但使用方法2类似[Class :: method()](http://www.php.net/manual/en/ language.oop5.paamayim-nekudotayim.php)在PHP中,那会好吗?我不会改变对象中的任何值。 – C9HDN 2013-03-12 13:48:12
第一种形式保持对创建对象的绑定。后者在每次调用时创建一个新对象。我认为大多数人会喜欢前者。
使用任何最易读的东西。后者在编译的字节码中使用2个较少的操作码,但这并不重要,除非你这样做是一个有100万次迭代的循环。 – 2013-03-12 13:34:26
如果你正在制作一个对象而忽视它的状态,那么你可能会做错某些事情。 – 2013-03-12 13:34:33
我必须同意@WaleedKhan。 'method()'做了什么,为什么它是一个你要立即抛弃而不是正常函数的对象的实例方法? – geoffspear 2013-03-12 13:36:44