python - 如何在 Python 上实现一个既可以接受内置类型又可以接受自定义类的函数?

标签 python

我想创建一个库来计算具有未知变量的表达式。为此,我做了这样的事情。

A = Forward() # Syntax from pyparsing
C = Forward()
B = A * 4 + C # B has Expr type.
A << 4
C << 4
# B can be evaluated to value 20 now
D = 8

print(Evaluate(B)) # should print 20
print(Evaluate(A)) # should print 4
print(Evaluate(D)) # should print 8

我想让 Evaluate 函数接受 int、Forward、Expr 和更多类型。由于 int 类型不能有自定义方法,简单的鸭子类型似乎不起作用。

还有比这更 pythonic 的吗?

def Evaluate(x):
    if isinstance(x, int):
        return x
    else:
        return x.Evaluate() # Forward, Expr has Evaluate method. 

最佳答案

如果您所有的自定义类都实现了.Evaluate,您可以这样做

try:
    return x.Evaluate()
except AttributeError:
    return x

关于python - 如何在 Python 上实现一个既可以接受内置类型又可以接受自定义类的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153141/

相关文章:

python - 在 Jupyter - Python 中有 2 个 Ipywidgets 作用于一个 matplotlib 图

python - 列 (0,1,3) 具有混合类型。在导入时指定 dtype 选项或设置 low_memory=False。导入 csv 文件时

python - 如何在 Python 中生成只有 'x' ,'y' 和给定长度 n 的回文列表?

Python Popen 在不应该等待的时候等待(bg 和输出重定向)

python - 使用 numpy 离散逼近高斯分布

python - Pandas Resample 上采样数据的最后日期/边缘

python加入两个csv文件

python - 如何在 Python 中用右移迭代步骤?

php - 使用外部 API 访问时,Python Bottle API 无 Json 响应

python - 读取文件python中的前一行