Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于条件的Python类定义_Python_Class - Fatal编程技术网

基于条件的Python类定义

基于条件的Python类定义,python,class,Python,Class,我在Python代码库中找到了如下类似的类定义。官方文件中似乎没有类似的例子。很难通过谷歌和论坛搜索找到类似的东西。有谁能帮助我理解Python背后的原理吗 class a: pass class b: pass condition = True class c(a if condition == True else b): pass a if condition==True else b是一个三元表达式 如果条件等于真否则使用b,则表示使用a作为基类 由于condition==True是Tr

我在Python代码库中找到了如下类似的类定义。官方文件中似乎没有类似的例子。很难通过谷歌和论坛搜索找到类似的东西。有谁能帮助我理解Python背后的原理吗

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

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

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

由于
condition==True
True
,因此它使用
a

>>> class c(a if condition == True else b): pass
>>> c.__bases__
(<class __main__.a at 0xb615444c>,)
从:

表达式
x if C else y
首先计算条件
C
(不是
x
);如果
C
为true,则计算
x
并返回其值; 否则,
y
将被计算并返回其值


在更传统的三元运算符的语法中,括号内的语句相当于
条件?a:b
。如果条件b(
==True
是多余的),则使用
更具pythonic!哇,我怎么没找到这个。谢谢你,阿什维尼!
>>> print 'foo' if 0>1 else 'bar'
bar
>>> print 'foo' if 1>0 else 'bar'
foo