在类中的方法中引用具有新变量名的属性是不好的做法吗?例如:
class Stuff:
def __init__(self, a):
self.a = a
def some_method(self):
a = self.a
# Do some stuff with a
我在其他人看到过这种情况'代码和我自己习惯了,尤其是长变量名。我这样做时似乎创建了a
的副本,如果a
非常大,则可能会出现问题。我应该坚持在self.a
内拨打some_method
吗? python垃圾会在调用后收集a
中创建的some_method
吗?
答案 0 :(得分:5)
这不一定是一个不好的做法,你可以出于两个原因(参见@ShadowRanger的评论,因为一个相当模糊的第三个原因)支持它:
self.a
的繁琐循环,如果你不需要每次都进行查找(不过太多时间),它可能会浪费一些时间。另外,如果这不是普通属性而是一个函数,则将其分配给局部变量将消除从function
到method
的转换,这也会减少一些执行时间。另外,复制不是最好的术语,你只需要使用不同的名称来引用同一个对象。方法some_method
完成后,a
将不存在,因为它仅在本地范围内创建。
不,垃圾收集不会发生,因为a
(分配给self.a
的值)不是唯一的引用;你仍然有self.a
来保持分配给它的值。