在python 3中引用泛型对象.__ add__

时间:2015-10-14 04:15:50

标签: python

我正在编写一个能够将字符串解析成方程式的解析器。

当我遇到符号时,说+,我需要生成一个带两个输入并添加它们的函数。

虽然我可以简单地编写一个lambda函数来执行此操作,但为此目的编写函数似乎很愚蠢,而且我最终得到的地图如下:

map = {
    '+': lambda a,b: a+b,
    '-': lambda a,b: a-b,
    # More symbols here
}

此外,我正在寻找are already defined in object的功能!这样,我可以做类似的事情:

map = {
    '+': object.__add__,
    '-': object.__sub__,
    # More symbols here
}

但是,当我尝试上面的代码时,出现type object 'object' has no attribute '__add__'错误。

如何参考我需要的功能?

1 个答案:

答案 0 :(得分:3)

您是否尝试过操作员模块?

// Classes conforming to this protocol...
protocol CustomViewProvider {

    typealias ViewType
}

// ... Will get customView accessor for free
extension CustomViewProvider where Self: UIViewController, Self.ViewType: UIView {

    var customView: Self.ViewType {
        return view as! Self.ViewType
    }
}


// Example:
extension HomeViewController: CustomViewProvider {
    typealias ViewType = HomeView
}

// Now, we can do something like
let customView: HomeView = HomeViewController().customView

用法:

import operator
operators = {"+": operator.add}