Как создать псевдоним для переменной в 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']


вы можете получить поведение, которое вы хотите с дескрипторов, но только для переменных-членов.