正常方式:
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/