AIB*_*AIB 9 python variables alias
class A:
__init__():
self.a.b.c = 10
anotherMethod():
self.a.b.c = self.a.b.c * 10
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如何在Python中实现别名?我想要做的是减少由于长变量名称引起的混乱.这是一个多线程环境.所以简单地复制到局部变量是行不通的.
Gar*_*tty 23
对此的解决方案是使用getter和setter方法-幸好Python有将property()内置隐藏的这种丑陋.
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
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的那样,通常这是设计糟糕的标志 - 您通常不希望类必须知道有三种关系的对象 - 这意味着对给定项目的更改可能会导致整个代码库出现问题.尝试让每个类处理它周围的类是一个更好的主意,而不是更进一步.
你很困惑.Python不会复制任何隐含的内容,它只存储引用,因此无论您处于哪种环境,它都可以工作.
# 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
Run Code Online (Sandbox Code Playgroud)
你会得到 ['AIB']