我在Python代码库中找到了类似的类定义。似乎官方文件中没有类似的例子。 Google很难找到类似的东西并在论坛中搜索。愿任何人帮助我理解Python背后的原理吗?
class a: pass
class b: pass
condition = True
class c(a if condition == True else b): pass
答案 0 :(得分:5)
a if condition == True else b
是一个三元表达。
如果a
等于condition
,则表示使用True
作为基类,否则使用b
。
由于condition == True
为True
所以它使用a
:
>>> class c(a if condition == True else b): pass
>>> c.__bases__
(<class __main__.a at 0xb615444c>,)
示例:
>>> print 'foo' if 0>1 else 'bar'
bar
>>> print 'foo' if 1>0 else 'bar'
foo
来自docs:
表达式
x if C else y
首先评估条件C
(不是x
);如果C
为真,则计算x
并返回其值; 否则,将评估y
并返回其值。