class A:
__init__():
self.a.b.c = 10
anotherMethod():
self.a.b.c = self.a.b.c * 10
class A:
__init__():
self.a.b.c = 10
alias self.aliased = self.a.b.c # Creates an alias
anotherMethod():
self.aliased = self.aliased * 10 # Updates value of self.a.b.c
如何在Python中实现别名?我想要做的是减少由于长变量名称引起的混乱。 这是一个多线程环境。所以简单地复制到本地变量是行不通的。
答案 0 :(得分:18)
解决这个问题的方法是使用getter和setter方法 - 幸运的是Python有the property()
builtin来隐藏它的丑陋。
class A:
def __init__():
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 anotherMethod():
self.aliased *= 10 # Updates value of self.a.b.c
正如其他人所指出的那样,通常这是设计糟糕的标志 - 您通常不希望类必须知道有三种关系的对象 - 这意味着对给定项目的更改可能会导致整个代码出现问题基础。尝试让每个类处理它周围的类是一个更好的主意,而不是更进一步。
答案 1 :(得分:8)
# this creates a list and stores a *reference* to it:
really_really_long_variable_name = []
# this creates another new reference to the *same list*. There's no copy.
alias = really_really_long_variable_name
alias.append('AIB')
print really_really_long_variable_name
您将获得['AIB']
答案 2 :(得分:1)
您可以使用descriptors获得所需的行为,但仅适用于成员变量。