我的变量 (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
分配给另一个变量。也许字典方法?
"%s" % dayId
真的有必要吗?如果 dayId
是 int 且 self.ids
是字符串字典,则应协调使用相同的数据类型以避免这种转换。此外,显式转换会更容易理解:str(dayId)
。
将整个
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()