5

我在 Python 代码库中找到了如下类似的类定义。官方文档中好像没有类似的例子。谷歌很难找到类似的东西并在论坛中搜索。谁能帮我理解这背后的 Python 原理?

class a: pass
class b: pass
condition = True
class c(a if condition == True else b): pass
4

1 回答 1

5

a if condition == True else b是三元表达式。

这意味着a用作基类 if conditionequals Trueelse use 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

文档

该表达式x if C else y首先评估条件,C(不是 x);如果C为真,x则评估并返回其值;否则,y被评估并返回其值。

于 2013-06-24T14:00:02.073 回答