2013-03-12 67 views
1

哪个最好?在Python中使用对象的最佳方式?

方法1

object = Object() 
object.method() 

方法2

Object().method() 

这是另一个类内使用,所以我醚设置中的所有需要​​作为该类的属性的对象(第一方法)还是只使用第二种方法访问它们?

使用每种方法的原因是什么(如果有的话)。

+2

使用任何最易读的东西。后者在编译的字节码中使用2个较少的操作码,但这并不重要,除非你这样做是一个有100万次迭代的循环。 – 2013-03-12 13:34:26

+4

如果你正在制作一个对象而忽视它的状态,那么你可能会做错某些事情。 – 2013-03-12 13:34:33

+0

我必须同意@WaleedKhan。 'method()'做了什么,为什么它是一个你要立即抛弃而不是正常函数的对象的实例方法? – geoffspear 2013-03-12 13:36:44

回答

4

第一种方法是通常的方法。由于实例化的对象绑定到一个变量,它可以在以后使用。顺便说一句,你可能是指object.method(),而不是object.method(圆括号用于实际调用方法)。

方法2不绑定实例,所以它不再可寻址,可能会在稍后进行垃圾回收。只有在调用方法后不必使用实例时才使用方法2。

+2

“可能是垃圾收集后”是误导。至少在cPython中,它会*立即被删除而不需要垃圾收集,因为它的引用计数是0. – geoffspear 2013-03-12 13:38:36

+0

@Wooble - 虽然你说得对,但我不确定其他python实现是否也这样做。我们需要谨慎对待'cPython'作为* only * python。我当然可以看到其他实现正在获得牵引力... – mgilson 2013-03-12 13:44:02

+0

如果我在多行访问对象,但使用方法2类似[Class :: method()](http://www.php.net/manual/en/ language.oop5.paamayim-nekudotayim.php)在PHP中,那会好吗?我不会改变对象中的任何值。 – C9HDN 2013-03-12 13:48:12

1

第一种形式保持对创建对象的绑定。后者在每次调用时创建一个新对象。我认为大多数人会喜欢前者。

相关问题