Python 缩短嵌套不可变对象变量名

0 投票
1 回答
564 浏览
提问于 2025-04-18 12:49

这个问题主要是出于好奇。

作为一名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

这样做不仅速度稍快,而且写起来也更简单。不过,读起来可能会简单,也可能会复杂。

撰写回答