python - 如何在 Python 中为变量创建别名?

标签 python variables alias

正常方式:

class A:
    def __init__(self):
        self.a.b.c = 10

    def another_method(self):
        self.a.b.c = self.a.b.c * 10

别名方法:

class A:
    def __init__(self):
        self.a.b.c = 10         
        alias self.aliased = self.a.b.c  # Creates an alias 

    def another_method(self):
        self.aliased = self.aliased * 10  # Updates value of self.a.b.c

如何在 Python 中实现别名?我想这样做的原因是为了减少由于长变量名而造成的困惑。 这是一个多线程环境,因此简单地复制到局部变量是行不通的。

最佳答案

解决方案是使用 getter 和 setter 方法 - 幸运的是 Python 有 the property() builtin隐藏它的丑陋之处:

class A:
    def __init__(self):
        self.a.b.c = 10

    @property
    def aliased(self):
        return self.a.b.c

    @aliased.setter
    def aliased(self, value):
        self.a.b.c = value

    def another_method(self):
        self.aliased *= 10  # Updates value of self.a.b.c

通常,深度嵌套的属性,如 self.a.b.c 是糟糕设计的标志 - 你通常不希望类必须知道 3 个关系之外的对象 - 这意味着改变给定的项目可能会导致整个代码库出现问题。最好尝试让每个类都处理它周围的类,而不是进一步。

关于python - 如何在 Python 中为变量创建别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049942/

相关文章:

javascript - Angular : Change String to variable

php - 直接调用变量属性与 getter/setter - OOP 设计

class - TypeScript "use"/类的别名

python - 修改矩阵。 python 非常有趣的任务

python - 导入错误:无法导入名称 'DurationField'

arrays - Swift 中的数组返回错误

将 `main` 和 `master` 视为相同的 git 别名

python - raise Exception, "foo"和 raise Exception ("foo"之间的区别)?

python - 使用 Numpy ndarray 进行条件索引

bash - Git Alias - 带有分支名称的 git commit