基于条件的Python类定义

shi*_*nji 5 python class

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

class a: pass
class b: pass
condition = True
class c(a if condition == True else b): pass
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 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>,)
Run Code Online (Sandbox Code Playgroud)

例子:

>>> print 'foo' if 0>1 else 'bar'
bar
>>> print 'foo' if 1>0 else 'bar'
foo
Run Code Online (Sandbox Code Playgroud)

来自文档:

表达式x if C else y首先评估条件,C(不 x); if C为true,x进行求值并返回其值; 否则,y将评估其值并返回其值.