【发布时间】:2018-10-24 09:23:09
【问题描述】:
我已经多次看到以下情况,其中实例变量(例如obj_foo 和obj_bar)被重新分配为本地方法变量(例如在call 内):
class Example:
def __init__(self, obj_foo, obj_bar):
self.obj_foo = obj_foo
self.obj_bar = obj_bar
def call(self):
obj_foo, obj_bar = self.obj_foo, self.obj_bar
obj_foo.do_something()
obj_bar.do_something_else()
我不确定这是惯例(易于阅读)还是有更重要的目的?
这是不好的做法吗?
这会影响性能吗?
【问题讨论】:
-
可能只是为了避免在变量名称前使用
self.,因为这两个变量将引用相同的对象 -
至于好坏,在相当极端的情况下可能有一些微优化的理由。但如果只是为了让它看起来更像 C++ 或避免作家抽筋,那是个坏主意。首先,不清楚您指的是实例对象,其次,如果重新分配它(
obj_foo = other_thing),也不清楚作者是否打算将其仅用于本地或是否是错误。这降低了可维护性,恕我直言。
标签: python class namespaces