如何在python中使用父类检查子类的类型



假设我有五个类,如下所示:

class Operator:
def __init__(self):
pass
class Pow(Operator):
pass
class Mul(Operator):
pass
class Div(Operator):
pass
class Add(Operator):
pass
class Sub(Operator):
pass

一个令牌数组,其中一些是数字,另一些是从上述{Pow,Mul,Div,Add,Sub}类实例化的对象。

当我循环遍历数组时,我希望能够检查像这样的令牌类型:

for token in tokens:
if type(token) is Operator:
# do something

而不是这样做:

for token in tokens:
if type(token) in [Pow, Mul, Div, Add, Sub]:
# do something

我不知道第二个for循环是否有一个好的替代方案。

(欢迎任何代码重构(

使用方法isinstance(token, Operator)

这是的例子

ar = Div()
if isinstance(ar, Operator):
print("true")
for token in tokens:
if isinstance(token, Operator):
# do something

最新更新