Как создать псевдоним для переменной в Python?
обычным способом
class A:
__init__():
self.a.b.c = 10
anotherMethod():
self.a.b.c = self.a.b.c * 10
Aliased подход
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? Причина, по которой я хочу это сделать, - уменьшить беспорядок из-за длинных имен переменных. это многопоточная среда. так что простое копирование в локальную переменную не получится.
3 ответов
решение этого заключается в использовании методов getter и setter - к счастью, Python имеет на 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
вы в замешательстве. 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
Вы получаете ['AIB']
вы можете получить поведение, которое вы хотите с дескрипторов, но только для переменных-членов.