基于条件的Python类定义

时间:2013-06-24 13:58:12

标签: python class

我在Python代码库中找到了类似的类定义。似乎官方文件中没有类似的例子。 Google很难找到类似的东西并在论坛中搜索。愿任何人帮助我理解Python背后的原理吗?

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

1 个答案:

答案 0 :(得分:5)

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

如果a等于condition,则表示使用True作为基类,否则使用b

由于condition == TrueTrue所以它使用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并返回其值。