2024-10-05 13:16:03 发布
网友
有人能解释一下初始化mbr2的表达式吗
mbr2
class MyClass(object): def __init__(self, param1, param2=None): self.mbr1 = param1 self.mbr2 = ({}, param2)[bool(param2)]
谢谢
逻辑根据param1的真实性从元组中选择两个值中的一个。如果False元组索引为0,否则为1;布尔值很容易强制为整数
param1
False
使用三元运算符可以更清楚地表示:
self.mbr2 = param2 if param2 else {}
或与or短路:
or
self.mbr2 = param2 or {}
这是一种(奇怪的)方法,可以做到以下几点:
它更像Python
基本上,如果param2是truthy(1)或falsy(0)(bool(param2)),它将在元组(({}, param2))上的两个元素之间进行选择
param2
bool(param2)
({}, param2)
每当param1是'truthy',self.mbr2 = param1。否则self.mbr2 = param1
self.mbr2 = param1
注意:True == 1和False == 0(和bool返回其中一个)
True == 1
False == 0
bool
更像Python的方式是:
逻辑根据
param1
的真实性从元组中选择两个值中的一个。如果False
元组索引为0,否则为1;布尔值很容易强制为整数使用三元运算符可以更清楚地表示:
或与
or
短路:这是一种(奇怪的)方法,可以做到以下几点:
它更像Python
基本上,如果
param2
是truthy(1)或falsy(0)(bool(param2)
),它将在元组(({}, param2)
)上的两个元素之间进行选择每当
param1
是'truthy',self.mbr2 = param1
。否则self.mbr2 = param1
注意:
True == 1
和False == 0
(和bool
返回其中一个)更像Python的方式是:
相关问题 更多 >
编程相关推荐