Python 缩短嵌套不可变对象变量名
这个问题主要是出于好奇。
作为一名Java程序员,我常常对嵌套变量中出现的多个点感到沮丧。(在Java中,有一种不成文的标准,任何包含超过两个点的变量的代码行都需要重写。)有没有办法“重命名”一个嵌套变量,这样我就不需要每次都输入所有的点呢?
举个例子:
class MyClass():
def my_func():
if not self.app.arguments.foo:
self.app.arguments.foo = 'bar'
print self.app.arguments.foo
有没有办法写成这样,让我不需要每次都输入完整的名字 self.app.arguments.foo
呢?
其次,使用这种变量的标准“Pythonic”方式是什么?标准的Python命名规则是说要一直使用所有的点吗?
额外说明
正如我所说,这更多是出于好奇。所以假设我无法访问模块b。换句话说,我不能(更确切地说是不想)写获取器和设置器方法。还要注意,self
是很重要的。我知道我可以通过导入来重命名,但你不能导入 self
。
1 个回答
0
你可以使用一个临时变量来处理链中的所有项,除了最后一项:
b = self.a.b
if b.c:
b.c = 'foo'
print b.c
如果你不需要赋值的话,可以一直处理到 c
。
这样做不仅速度稍快,而且写起来也更简单。不过,读起来可能会简单,也可能会复杂。