如何更改一个变量的值以便另一个变量也随之更改(Python)

问题描述 投票:0回答:1

我的变量 (a) 太长。为了解决这个问题,我想创建另一个变量 (b)。现在我正在使用(b),因为它很短,但(a)也必须改变。所以我必须以某种方式将一个变量绑定到另一个变量,这样如果一个变量发生变化,另一个变量也会发生变化。

这是一个例子:

self.ids["%s" % dayId].background_color = 1


if self.ids["%s" % dayId].background_color == 1:
    self.ids["%s" % dayId].background_color = 0
elif self.ids["%s" % dayId].background_color == 0:
    self.ids["%s" % dayId].background_color = 1

#All of the code above is too long!

现在出于美观原因我必须将

self.ids["%s" % dayId].background_color 
分配给另一个变量。也许字典方法?

python
1个回答
0
投票
  1. "%s" % dayId
    真的有必要吗?如果
    dayId
    是 int 且
    self.ids
    是字符串字典,则应协调使用相同的数据类型以避免这种转换。此外,显式转换会更容易理解:
    str(dayId)

  2. 将整个

    if..else
    压缩为:

    self.ids[dayId].background_color = int(not self.ids[dayId].background_color)
    

    使用布尔值而不是整数来消除

    int
    调用。

如果你仍然想“缩写变量”,最多你可以这样做:

day = self.ids["%s" % dayId]

if day.background_color == 1:
    day.background_color = 0
...

您不能将

self.ids["%s" % dayId].background_color
分配给变量,因为之后分配给该变量不会更改
self.ids["%s" % dayId]
对象(正如您可能已经发现的那样)。

也许更好的方法是为

self.ids["%s" % dayId]
对象提供一个方法来在内部完成所有这些工作:

self.ids["%s" % dayId].flip_background_color()
© www.soinside.com 2019 - 2024. All rights reserved.