python缩短嵌套的不可变对象变量名称

时间:2014-07-10 17:08:53

标签: python

这个问题主要是关于好奇心。

作为一名java程序员,我常常对嵌套变量的所有点感到沮丧。 (在java中有一种事实上的标准,任何具有超过2个点的变量的行都需要重写)。反正是否有“重命名”嵌套变量,以至于我不必每次都输入所有的点?

例如

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。换句话说,我不能(更喜欢不想)编写getter和setter方法。 另请注意,self很重要。我知道我可以使用导入进行重命名,但您无法导入self

1 个答案:

答案 0 :(得分:0)

您可以为链中的最后一项使用临时变量:

b = self.a.b
if b.c:
    b.c = 'foo'
print b.c

如果你没有分配,你可以一直到c

这更快一点,也更容易编写。但是,阅读可能会或可能不会更容易。